2017-06-11 42 views
-2

我想將兩個表合併成一個表。 第一個是:sql用foregin鍵選擇兩個表

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

第二個是:

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

有北京時間一個FK code_1 = CODE和CODE_2 = CODE 我想創建只是NAME_1和NAME_2表(由code_1或通過代碼_2) 但不只是一個smiple查詢,其中名稱不是XXX或YYY,而是來自FK的名稱。就像這樣:

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

我tryed這樣,但我不知道如何與NAME_1替換XXX:

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) 

非常感謝!

+0

爲什麼只有兩行?你不只是用他們的名字替換代碼。你在做什麼?請更多地說出答案的時間。 (你必須告訴我們你正在總結/標記爲「組合」。)理想情況下,完成這個句子模板:當(f.id,f.code_1,f.code_2)中的行(id,code_1,code_2) (s1.code,s1.name)&(s2.code,s2.name)在第二個和id = f.id和and code_1 = s1.name和code_2 = s2.name和s1.name = f.code_1和s2.name = f.code_2和...「 – philipxy

+0

PS讀取SQL JOIN給定別名a和b的兩個表的連接是來自b和a的行的連接的行(一個句子模板AND導致一個SQL查詢JOIN,ON,WHERE或AND) – philipxy

+1

PS請閱讀並按照[mcve]進行操作。不給出一個,即與回答您的問題相關的信息,使您的問題脫離主題 – philipxy

回答

1

要獲得包括你可以用兩個表的結果:

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; 

以上沒有進行測試。讓我知道它是否有幫助。

有關MySQL的更多信息,你可以看看:https://www.w3schools.com/sql/

在回答修訂

+0

是的,但只有一個案例XXX和YYY不是YYY和XXX – Kate

+0

需要知道表格的含義以便查詢。人們不需要知道約束條件。可以使用約束條件,例如將1行1列表轉換爲值或省略DISTINCT或保留ALL。但是從來沒有*需要*約束。 – philipxy

+0

@Kate我們應該怎麼處理「我有語法錯誤」?給出錯誤消息。谷歌錯誤消息。閱讀關於UNION。 – philipxy