2010-04-02 5 views
3

Je suis un peu confus à ce sujet. J'ai une table de données structurées comme ceci:Recherche de la même table de correspondance avec plusieurs colonnes

Tableau: Données

DataID Val 
1   Value 1 
2   Value 2 
3   Value 3 
4   Value 4 

J'ai une autre table structuré comme celui-ci:

Tableau: Tableau 1

Col1 Col2 
1  2 
3  4 
4  3 
2  1 

Les deux colonnes de table1 pointez sur les données de la table de données. Comment puis-je obtenir ces données à afficher dans une requête? Par exemple, une requête pour retourner ceci:

Requête: Query1

Column1 Column2 
Value 1 Value 2 
Value 3 Value 4 
Value 4 Value 3 
Value 2 Value 1 

Je suis assez familier avec SQL pour faire une jointure avec une colonne, mais a perdu au-delà. Toute aide est appréciée. Exemple de SQL ou un lien vers quelque chose à lire. Merci!

PS: Ceci est en sqlite

Répondre

10

Vous pouvez vous joindre à la même table deux fois:

Select 
    d1.val As column1, 
    d2.val As column2 
From table1 t 
Join data d1 On (d1.dataId = t.col1) 
Join data d2 On (d2.dataId = t.col2) 
+0

+1 droit, une double jointure est ce qu'il demande – Andomar

+0

Merci, il fonctionne très bien. Je n'étais pas conscient que vous pouviez spécifier une jointure sans utiliser l'intérieur, la gauche ou la droite. J'ai vraiment besoin de lire un livre là-dessus! – dmaruca

+0

'JOIN' est identique à' INNER JOIN', tandis que 'LEFT JOIN' est le même que' LEFT OUTER JOIN'. –