2011-05-26 2 views
1

Je voudrais revenir tous les rapports qui sont sur chacune de ces régions, qui appartiennent à une macrorégion ...MySQL: Sélectionnez plusieurs valeurs à partir d'une table basée sur plusieurs valeurs d'une autre table

Je voudrais en quelque sorte

SELECT DISTINCT report FROM reports WHERE region = 
(SELECT distinct region from macroregions where macroregion = 'Africa') 

les régions du Sahara sont macrorégion, Afrique de l'Ouest, l'Afrique tropicale, ... etc

Bien que cela est impossible, car il la sous-requête renvoie plusieurs résultats.

+0

@RVWard Comment est-ce que cela se compare à php? – yannis

+0

Je filtre les rapports à montrer à l'utilisateur en fonction du continent sur lequel ils se trouvent. –

+0

@RVWard J'ai supprimé l'étiquette php de la question car la langue que vous utilisez pour afficher les résultats n'a rien à voir avec ce que vous demandez réellement. – yannis

Répondre

2
SELECT DISTINCT report FROM reports WHERE 
region IN 
(SELECT distinct region from macroregions where macroregion = 'Africa') 

Peut-être que vous avez manqué IN opérateur

+0

Wow, ça a marché. Donc, IN est l'astuce pour contourner l'erreur 'Plus d'un résultat renvoyé pour la sous-requête'? –

+0

Oui. il y a un autre opérateur qui peut aussi faire d'autres sorts (comme> ANY) – dynamic

+0

Wooooha! Vous êtes un faiseur de miracles! –

2

Cela devrait vous obtenir ce dont vous avez besoin:

SELECT 
    r.report 
FROM 
    reports r 
INNER JOIN 
    macroregions m ON 
     m.region = r.region 
     AND 
     m.macroregion = 'Africa'

Ceci est tous les rapports associés aux régions associées à la macro-région « Afrique ».

+0

Cela a fonctionné aussi, génial: D –

Questions connexes