2010-07-13 11 views
0

J'ai une requête mySQL qui produit un ensemble vide. Par exemple,MySQL Query génère un ensemble vide

SELECT id 
FROM `my_table` 
WHERE type = 'old' 
AND neighborhoods = 'Newport' 

produit un ensemble vide. Dans le cas où la requête produit un ensemble vide, il est possible de le renvoyer:

id 
--- 
0 

Merci.

-Laxmidi

Répondre

0

Vous pouvez ajouter dans une partie COUNT de la requête

SELECT id, COUNT(id) as Total 
FROM `my_table` 
WHERE type = 'old' 
AND neighborhoods = 'Newport' 

Et qui retourne au moins un enregistrement avec Total=0

+0

J'ai quitté id, et COUNT() comme paramètres, donc vous obtiendrez un résultat de "0" ou vous obtiendrez le jeu d'enregistrements. – jerebear

+0

jerebear, Merci beaucoup! Cela fonctionne très bien. – Laxmidi

0

Oui,

SELECT COUNT(id) 
FROM `my_table` 
WHERE type = 'old' 
AND neighborhoods = 'Newport' 

Will retourne toujours un ensemble de résultats.

0

Si vous avez besoin de l'ID INCLUDE, vous pouvez utiliser LEFT OUTER pour cela.

SELECT a.id, 
     IFNULL(b.cnt,0) as cnt 
FROM 
(
    SELECT distinct id, 'myjoin' as myjoin 
    FROM `my_table` 
    WHERE id = [what you are looking for] 
) a LEFT OUTER JOIN 
(
    SELECT COUNT(id) as cnt 
    FROM `my_table` 
    WHERE type = 'old' 
    AND neighborhoods = 'Newport' 
) b ON a.myjoin=b.myjoin 

La première requête ramène l'ID que vous voulez puis rejoint (LEFT OUTER) qui à une valeur fixe (appelée « myjoin » dans ce cas) et rapportera 0 si cette dernière requête revient vide.