加入3个表,没有得到理想的结果

时间:2017-07-18 12:48:14

标签: mysql sql join inner-join

我在MySql中有三个表: 活动用户两者都有很多关系。因此,第三个表参加

表格内容:

活动
e_id,e_content

用户
u_id,u_details

参加
e_id,u_id,参加

让我们考虑我已登录,我的uid是1005。 所以我希望看到所有事件是否我正在接受evnet,但如果我参加 Attend.attending 列应该是,否则它应该为null

我已尝试过很多连接,但我没有收到所需的查询。

像:

select e.e_id,u.u_details,a.attending
from Events e 
left join attend a on e.e_id = a.e_id
left join users u on u.u_id = a.U_id
and u.u_id = 1005;

使用上面的查询我得到所有uid的相同结果

2 个答案:

答案 0 :(得分:1)

您需要在此处LEFT JOIN进行

select e.e_id,u.u_details,a.attending
from Events e 
left join attend a on e.e_id = a.e_id
left join users u on u.u_id = a.U_id
and u.u_id = 1005;

答案 1 :(得分:1)

如果特别要求,所有事件都需要显示,但只是特定用户(1005)参加的地方已经参加=“是”然后需要比左连接多一点,好像多个用户正在参加,它即使未显示u_id,所有参加的用户仍会显示“是”。

http://sqlfiddle.com/#!9/ed738/3/1

显示带有2个左连接的查询,然后显示第2个结果集,它得到我认为的所需结果。

select e.e_id,a.u_details,a.attending
from Events e 
left join (select a.*, u.u_details 
                     from attend a 
                     INNER join users u ON
                     (a.u_id = u.u_id and u.u_details = 'will')) a on e.e_id = a.e_id

有很多优雅的方法可以做到这一点,但认为这样做有效。