2012-11-28 45 views
2

我想知道是否有可能從別名2和獨立的表2列同名。別名2列同名

例如,我想加入一個用戶表和管理員表中的電子郵件表,讓各自的「名稱」列在同一列相結合。

Email Table: Email ID | Email Address 

User Table: Username| Email ID 

Admin Table: Username| Email ID 

Result: 

Username | Email Address 
+2

所以你希望這些列是分開的,但要有相同的名稱,或者你想要它們完全合併以及? – RonaldBarzell

+0

@ user1161318完全合併,好像UNION是,我一直在尋找神奇的關鍵字。 – Klathmon

回答

2

我相信這是你想要得到什麼:

SELECT a.Username, a.Email_ID, b.Email_Address 
FROM 
    (SELECT Username, Email_ID FROM User 
    UNION ALL 
    SELECT Username, Email_ID FROM Admin) a 
INNER JOIN Email b ON b.Email_ID = a.Email_ID 

這將堆疊UserAdmin表,然後JOINEmail表。

注意,如果有重複,你想刪除它們,你應該使用的UNION代替UNION ALL

1

假設你的表有以下幾列

Email: EmailId, EmailAddress 
User: UserName, EmailId 
Admin: UserName, EmailId 

那麼下面工會應該讓他們進入一個列表。注意我正在使用LEFT JOIN來允許用戶或管理員表中的EmailId無效的情況

SELECT u.UserName, e.EmailAddress 
FROM USER u 
LEFT JOIN Email e ON e.Id = u.EmailId 

UNION 

SELECT a.UserName, e.EmailAddress 
FROM Admin u 
LEFT JOIN Email e ON e.Id = a.EmailId 
+0

礦和@ NJK的答案之間的區別是,我做的第一連接和工會的結果,而他的工會用戶和管理員的表,然後再加入。它是有效的兩種方式,但我懷疑他可能是更理想的 –

+0

從技術上講,你執行這取決於記錄的兩個'JOIN's,可能需要更長的時間。 – Kermit

+0

這是一個非常簡單的例子,所以我會在UNION讀了,所以我可以做一個高效的查詢 – Klathmon