我写这条SQL语句:SQL INNER JOIN修复
SELECT
e.id AS event_id, e.title, e.date, e.category, e.place, e.minAge, e.maxAge,
p.id, p.name, p.coor, p.nz,
a.user, a.event, COUNT(a.user) AS attending,
i.user_id, i.event_id
FROM events AS e
LEFT JOIN attendance a ON a.event = e.id
LEFT JOIN places p ON p.id = e.place
LEFT JOIN invited_friends i ON (i.event_id = e.id) AND (i.user_id = 0)
GROUP BY e.id
ORDER BY attending DESC
此语句选择从表事件事件和参加一些表。目前为止一切都很好。 我有另一个表格:invited_friends
。
event_id bigint(20)
user_id int(11)
owner tinyint(1)
此表存储邀请参加活动的用户ID。
问题是,并非每个事件都是私人事件,并非每个事件都有被邀请的朋友......我可以判断事件是否是私人事件的方式是列:类别事件表中,如果它= 4那么这是一场私人活动。
我的内连接的作品,但它忽略了所有的公共事件,因为他们没有邀请的朋友。
我该如何解决呢?
在此先感谢。
不明白,什么是所需的输出?只是私人活动,还是什么? – 2012-02-28 21:18:26
为invite_Friends添加左连接而不是内连接? – 2012-02-28 21:20:54
所需的输出是所有事件,但是如果事件是私有的,那么当前用户需要被邀请,否则它将忽略它:像我的内部连接:''INNER JOIN invite_friends我ON(i.event_id = e。 id)AND(i.user_id = 0)''。左连接是好的,但它不解决我的问题,因为它仍然给我说,你的问题当前用户没有被邀请到 – Amir 2012-02-28 21:21:50