2017-06-11 3 views
-2

Ich möchte zwei Tabellen zu einem kombinieren. Erste ist:sql Wählen Sie zwei Tabellen mit Foregin-Schlüssel

ID code_1  code_2 
============================== 
1  XXX  YYY 
2  ZZZ  YYY 
3  YYY  ZZZ 

zweite ist:

CODE Name 
============== 
XXX  Name_1 
YYY  Name_2 
ZZZ  Name_3 

Es IST ein FK CODE_1 = CODE und CODE_2 = CODE ich eine Tabelle nur mit Name_1 und Name_2 erstellen möchten (von CODE_1 oder von code_2) aber nicht nur eine kleine Abfrage, wo statt Namen XXX oder YYY sind, sondern mit den Namen von FK. Wie folgt aus:

ID code_1 code_2 
======================= 
1 Name_1 Name_2 
3 Name_2 Name_1 

tryed ich so, aber ich weiß nicht, wie XXX mit einem Name_1 zu ersetzen:

SELECT Table1.ID, Table1.code_1, Table1.code2 FROM MyDB.Table1 
WHERE (code_1=XXX and code_2 =YYY) or (code_2=XXX and code_1 =YYY) 

Vielen Dank!

+0

Warum nur zwei Zeilen in der Antwort? Sie ersetzen Codes nicht nur durch ihre Namen. Was machst du? Bitte sagen Sie mehr darüber, wann eine Zeile in der Antwort steht. (Sie müssen uns sagen, was Sie als "kombinieren"/zusammenfassen.) Im Idealfall, beenden Sie diese Satzvorlage: row (id, code_1, code_2) ist in der Antwort wann (f.id, f.code_1, f.code_2) ist in First und (s1.code, s1.name) & (s2.code, s2.name) sind in Second und id = f.id und und code_1 = s1.name und code_2 = s2.name und s1.name = f.code_1 und s2.name = f.code_2 und ... " – philipxy

+0

PS Read re SQL JOIN. Der Join zweier Tabellen mit dem Alias ​​a & b sind die Zeilen, die eine Verkettung einer Zeile aus einer und einer Zeile aus b sind (Eine Satzvorlage AND führt zu einer SQL-Abfrage JOIN, ON, WHERE oder AND.) – philipxy

+1

PS Bitte lesen Sie & handeln Sie auf [mcve]. Geben Sie keine Frage, dh die zur Beantwortung Ihrer Frage relevanten Informationen, Ihre Frage off-topic – philipxy

Antwort

1

Um ein Ergebnis zu erhalten, die beiden Tabellen enthalten, die Sie verwenden können:

SELECT id FROM table1 
INNER JOIN table2 ON CODE = code_1 
UNION ALL 
SELECT table2.name Name1 
FROM table2 
INNER JOIN table1 ON CODE = code_1 
UNION ALL 
SELECT table2.name Name2 
FROM table2 
INNER JOIN table1 ON CODE = code_2; 

Die oben getestet nicht. Lass es mich wissen, wenn es geholfen hat.

Für weitere Informationen über MySQL, können Sie überprüfen: https://www.w3schools.com/sql/

AKTUALISIERT

+0

Ja es ist aber nur ein Fall XXX und YYY nicht YYY und XXX – Kate

+0

Man muss wissen, was die Tabellen bedeuten, um abzufragen. Man muss die Einschränkungen nicht kennen. Man könnte die Einschränkungen verwenden, um z. B. eine 1-zeilige 1-spaltige Tabelle in einen Wert zu konvertieren oder eine DISTINCT zu lassen oder in einer ALL zu belassen. Aber man braucht niemals die Einschränkungen. – philipxy

+0

@Kate Was sollen wir mit "Ich habe Syntaxfehler" tun? Geben Sie die Fehlermeldung ein. Google die Fehlermeldung. Lies über UNION. – philipxy

Verwandte Themen