2012-03-03 50 views
0

我遇到了MySQL問題。加入mysql表並獲得多行

我有2個表:

Table A    Table B 

userId    userId 
name     email 
email 

這是一個關係1-> N(1用戶可以在表B收到多封電子郵件)

現在我想我的用戶導入到一個郵件程序,我想讓它在1查詢而不是多個查詢。

我想什麼有如下:

用戶ID,姓名,電子郵件

例如:

1 , John Doe , [email protected] (This email comes from Table A) 
1 , John Doe , [email protected] (This email comes from Table B) 

目前,我有以下查詢返回多個行,但問題是領域是不一樣的

我得到像這樣的東西:

Table A.name , Table A.email , Table B. email etc .. 


SELECT 
jos_users.userId, 
jos_members_webAddress.email2, 
jos_users.uniqueId, 
jos_users.firstName, 
jos_users.lastName, 
jos_users.username, 
jos_users.email 


FROM 
jos_users 
INNER JOIN jos_members_webAddress ON jos_users.userId = jos_members_webAddress.memberId 

感謝您的幫助

+0

爲什麼你有兩張表中的電子郵件? – Amadan 2012-03-03 02:14:46

+0

該系統的製作方式是用戶可以有N封電子郵件。 – Tarek 2012-03-03 02:15:56

+0

您現在在'tableA'中有1封電子郵件,'tableB'中有N-1封電子郵件。如果沒有'tableA'中的電子郵件,你會在'tableB'中有N封電子郵件,並且'tableA'中沒有討厭的例外情況。 – Amadan 2012-03-03 02:18:36

回答

4

立即回答你的問題:

SELECT userId, name, email 
FROM tableA 
UNION 
SELECT tableB.userId, tableA.name, tableB.email 
FROM tableA 
JOIN tableB ON tableA.userId = tableB.userId 

更好地回答你的問題,除非你可以給我的意見了堅實的回答第一反應:

刪除email from tableA,所有電子郵件地址爲tableB,那麼它只是UNION下的答案的一部分。