2012-02-13 3 views
0

Je cette requête ici:renvoie une valeur spécifiée s'il n'y a aucun résultat

$query='insert into pageview (visitor,id_realestate,time) 
    select "q17872745t", 150, now() 
    from pageview a 
    where DATE_ADD(now(),INTERVAL -30 MINUTE) > (
     select max(time) from pageview b where a.id_realestate=b.id_realestate AND a.visitor=b.visitor 
) LIMIT 1'; 

Je veux cette partie:

select max(time) from pageview b where a.id_realestate=b.id_realestate AND a.visitor=b.visitor 

pour retourner une date /heure qui est maintenant () moins 40 minutessi il y a aucun résultat

+0

Qu'est-ce que vous essayez de faire? Pourquoi obtenez-vous la table 'pageview' deux fois? Dites-nous ce que vous devez insérer et nous pouvons refactoriser votre requête correctement – Marco

+0

@Marco voir ceci http://stackoverflow.com/questions/9251082/insert-with-a-condition/9251278#9251278 Je veux maintenant encore insérer le données si la combinaison (visiteur, valeur) n'existe pas. –

Répondre

1

Enveloppez le MAX(time) dans une clause IFNULL.

IFNULL(MAX(time), NOW() - INTERVAL 40 MINUTE) 
0

Si l'on suppose votre requête est correcte, il suffit d'envelopper votre requête en cours dans une autre requête et vérifiez si la valeur est nulle comme ceci:

select IFNULL (select max (temps) de pageview b où a.id_realestate = b.id_realestate AND un.visitor = b.visitor, DATE_SUB (maintenant(), INTERVALLE 30 MINUTES));

Dans la requête ci-dessus, j'ai enveloppé votre requête en utilisant max() comme sous-requête, et si la valeur renvoyée est null, retourne une valeur en utilisant DATE_SUB pour soustraire 30 minutes de now().

+0

Pas besoin de sous-requête ici. – fancyPants

Questions connexes