我寫這條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