2013-02-01 5 views
0

J'ai deux tables:SQL comment joindre deux colonnes de tables différentes comme résultat

Tableau 1:

--------------------------- 
|id_column1 | name_column | 
--------------------------- 
|  1 | my_name1 | 
|  2 | my_name2 | 
--------------------------- 

Tableau 2:

-------------------------------------- 
|id_column2 | surname_column | fk_id1| 
-------------------------------------- 
|  111 | my_surname1 | 1  | 
|  222 | my_surname2 | 2  | 
-------------------------------------- 
fk_id1 is foreign key referenced to table1.id_column1 

SELECT * FROM table1 WHERE fk_id1=1; 

-------------------------------------- 
|id_column2 | surname_column | fk_id1| 
-------------------------------------- 
|  111 | my_surname1 | 1  | 

Comment puis-je obtenir ce (est-il possible à tous pour joindre deux colonnes de table comme résultat):

------------------------------------------------ 
|id_column2 | surname_column | fk_id1| name | 
------------------------------------------------ 
|  111 | my_surname1 | 1  |my_name1 | 

Quelque chose comme ci-dessous:

SELECT * FROM table2 WHERE fk_id1=1 AND SELECT name FROM table1 WHERE id_column1=1; 

Répondre

5

Vous voulez dire quelque chose comme ça?

SELECT t2.*, t1.name_column 
FROM table2 t2 
    INNER JOIN table1 t1 on t2.fk_id1 = id_column1 
WHERE t1.id_column1 = 1 

Voici un exemple SQL Fiddle pour les tests.

+0

que signifie t2 et t1? Sont-ils des alias de table1 et table2? – torayeff

+1

@torayeff C'est exactement ce qu'ils sont! –

+0

@ XaviLópez l'exemple ne contient aucune variable de clé étrangère. Cela ressemble à des jointures sql – fewtalks

4
SELECT id_column2,surname_column,fk_id1,name_column FROM table1,table2 WHERE table1.id_column1=table2.fk_id1 AND table1.id_column1=1; 
+0

Pourquoi les downvotes? Cela fonctionne [sqlfiddle] (http://sqlfiddle.com/#!2/018d1/2). – Vucko

+1

+1 maintenant. Il avait des problèmes de syntaxe [avant l'édition] (http://stackoverflow.com/revisions/14643053/2). –

+1

@ XaviLópez, oui je l'ai fait, changé quand je l'ai vu. Taper rapidement :) – Vucko

1

Ceci est simple.Peut être fait en utilisant la jointure intérieure.

SELECT id_column2,surname_column,fk_id1,name_column as name FROM table1 Inner Join table2 on table1.id_column1=table2.fk_id1 where table1.id_column1=1; 

Ou

SELECT id_column2,surname_column,fk_id1,name_column as name FROM table1 , table2 where table1.id_column1=table2.fk_id1 and table1.id_column1=1; 

Si vous voulez résultat dans le format ci-dessous:

------------------------------------------------ 
|id_column2 | surname_column | fk_id1| name | 
------------------------------------------------ 
|  111 | my_surname1 | 1  |my_name1 | 
Questions connexes