2011-09-02 4 views
0

J'ai une table qui ressemble à ceci:MySQL: Afficher les résultats donnés

target_id || country_code

5 ----------- || ------- ---- US

5 ----------- || - ------ --- CA

2 ---------- ------- || FR ----

3 ------ ---- || ------- SP ----

3 ---------- || ------- FR ----

Et une autre table qui ressemble à ceci:

target_id || REGION_NAME

5 ----------- || --- Amérique du Nord

2 ----------- || ----- France-- ----

3 ----------- || ----- Certains l'Europe

Comme vous pouvez le voir, le tableau 2 contient les emplacements et target_ids, tandis que le tableau 1 contient où ces emplacements sont ciblés. Dans le cas de l'Amérique du Nord, il est visé à 5, qui appartient au Canada et aux États-Unis. La France, en revanche, a un target_id de 2, et Some Europe un target_id de 3, qui contient à nouveau la France et l'Espagne. Ce que je voudrais faire via MySQL, c'est d'obtenir une table de target_id, country_code, country_name mais uniquement pour les pays. Cela signifie, seulement pour les target_ids du tableau 1 qui sont dans une seule ligne (par exemple, nous savons que FR est un pays parce que le numéro 2 est seulement en FR, et nous savons que 3 représente une région parce qu'il a l'Espagne et la France associé). Est-ce possible via MySQL ou est-ce que j'ai besoin de deux requêtes et de PHP au milieu?

Merci!

Répondre

2
SELECT t1.target_id, t1.country_code, t2.region_name 
    FROM table1 t1 
    JOIN table t2 
    ON t1.target_id = t2.target_id 
    WHERE (SELECT COUNT(*) FROM table1 t3 WHERE t3.target_id = t1.target_id) = 1 

table1 est celui avec les codes de pays, table2 est celui avec les noms de région.

Questions connexes