2010-12-12 7 views
1

Voici mon problème:
MySQL: une partie de la table-A se joindre à une partie de la table-B

 
Table A 
id_a | name 
--------------------- 
1 | name-A 
2 | name-B 
3 | name-C 
4 | name-D 
5 | name-E 
6 | spcial_type 
 
Table B 
id_b | id_a | condition | subtype 
------------------------------------------------- 
1 | 2 | 1  | 1 
2 | 1 | 0  | 1 
3 | 1 | 1  | 2 
4 | 2 | 0  | 1 
5 | 4 | 0  | 1 
6 | 5 | 1  | 1 
7 | 2 | 1  | 3 

Conditions:
Tableau A: « special_type » non inclus
Tableau A: lignes non présent dans le tableau B inclus
Tableau B: tout d'état = 0 non inclus

 
Result Table: 
id_r | id_a | id_b | name | condition 
----------------------------------------------- 
1 | 1 | 3 | name-A | 1 
2 | 2 | 1 | name-B | 1 
3 | 5 | 6 | name-E | 1 
4 | 2 | 7 | name-B | 1 
5 | 3 | null | name-C | null 

table A.subtype est seulement aux. pour montrer que ID_A peut être stocké plusieurs fois avec condition = 1

Ce que j'ai essayé:

 
select x.id_a, x.name, z.id_b, z.id_a, z.condition from Table A 
LEFT JOIN Table z ON x. id_a = z. id_a 

mais cela m'a fait articles avec état = 0, que je ne veux pas

donc j'ai essayé :

 
select x.id_a, x.name, z.id_b, z.id_a, z.condition from Table A 
LEFT JOIN Table z ON x. id_a = z. id_a where z.condition=1 

mais cette idée exclut les éléments du tableau A non présents dans le tableau B, et je veux ces éléments. Est-ce que ça peut être à l'intérieur de MySQL, ou ai-je besoin d'un script? pour le trier?

Pensées quelqu'un?

+0

Il est pas clair pour moi ce que votre résultat attendu est, et les requêtes ne sont pas cohérentes avec les tables décrites. –

+0

Ils (q v. T) regardent OK pour moi .. et après le changement .. fonctionnent bien – Jeffz

Répondre

3

OK
Je dois avoir eu un temp. coupure électrique.
Ici, il est:

 
select x.id_a, x.name, z.id_b, z.id_a, z.condition from Table A 
LEFT JOIN Table z ON x. id_a = z. id_a AND z.condition=1 

état ci-dessous

 
AND z.condition=1 

a été la clé, lorsqu'il est placé dans la condition de jointure pas dans la clause where

Questions connexes