2010-08-02 3 views
0

J'ai deux tables. Dis:Comment interroger deux champs différents d'une table et les faire apparaître dans la même rangée?

This is table 1 
+--------+-----------------------+ 
| stuff | foreing | foreing2 | 
+--------+-----------------------+ 
| bazzzz |  555 |  666 | 
+--------+-----------------------+ 

This is table 2 
+-----------------------+ 
| id_table | values  | 
+-----------------------+ 
|  555 | Foo  | 
+-----------------------+ 
|  666 | Bar  | 
+-----------------------+ 

Ce que je veux est une requête SQL qui me donne suite à cette info:

+--------+-----------------------+ 
| stuff | value1 | value2 | 
+--------+-----------------------+ 
| bazzzz | Foo  | Bar  | 
+--------+-----------------------+ 

C'est ce que j'ai essayé de le faire, mais en réalité il retourne deux lignes, ce qui est ce que je veux:

SELECT table1.stuff, 
    table2.values as value1, 
    table2.values as value2 
    WHERE table1.foreing = table2.id_table 
    OR table1.foreing2 = table2.id_table 
+0

Essayez « pivot » –

Répondre

3

Puisque vous devez faire correspondre deux colonnes avec la même table d'enfant ... vous ne devez pas nécessairement consulter la table enfant deux fois ...

Select table1.Stuff, B.Vales as Value1, C.Values as Value2 
From table1, table2 as B, table2 as C 
    Where table1.foreing = B.id_table and table1.foreing2 = C.id_table 
+0

Compte à rebours pour commenter la syntaxe de jointure explicite dans 3 ... 2 ... 1 ... –

0

Vous aurez à faire des requêtes internes comme celui-ci:

SELECT table1.stuff, 
    (select table2.values as value1 where table2.id_table=table1.foreing), 
    (select table2.values as value2 where table2.id_table=table1.foreing2) 
    from table1 
+0

- voir la réponse du roi. –

+0

@Mark: C'est vrai. c'est une autre façon d'y aller. – Kangkan

Questions connexes