2012-03-03 51 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下的答案的一部分。