我正在建立一個管理用戶出勤的網站的一部分。單獨在表格的每一行上執行兩個連接?
有四個表涉及:用戶,出席(多對多鏈接)和事件。
考勤表只存儲userId和eventId以及他們是否在場,缺席,生病或休假。
我正在嘗試創建一個mySQL查詢,它將顯示沒有出席記錄的每個用戶事件對。他們沒有被標記爲存在,生病等
我曾嘗試使用INNER JOIN從用戶出席,然後從出席事件的右加入,但這將不得不爲每個用戶單獨執行。我不知道我是否正朝着正確的方向前進,或者確定如何使查詢在SQL中迭代。
在此先感謝!
更多信息:
用戶表
+-----+---------+ | id | name | +-----+---------+ | 104 | Matthew | | 102 | Kev | | 101 | Julia | +-----+---------+
出席
+----+--------+---------+------+ | id | userId | eventId | type | +----+--------+---------+------+ | 16 | 104 | 47 | L | | 20 | 104 | 46 | L | | 21 | 104 | 45 | L | | 22 | 102 | 47 | L | | 23 | 102 | 46 | L | | 24 | 102 | 45 | L | | 28 | 102 | 44 | L | | 25 | 101 | 47 | L | | 26 | 101 | 46 | L | | 27 | 101 | 45 | L | +----+--------+---------+------+
活動
+----+------------+ | id | date | +----+------------+ | 43 | 2014-08-01 | | 44 | 2014-08-08 | | 45 | 2014-08-15 | | 46 | 2014-08-22 | | 47 | 2014-08-29 | +----+------------+
我嘗試:
SELECT * FROM `user`
INNER JOIN attendance ON user.id=userId
RIGHT JOIN event ON attendance.eventId=event.id
WHERE event.date BETWEEN '2014-08-01' AND CURDATE()
目標
理想情況下,我想一個表中不存在的記錄的用戶id和事件ID返回。
+--------+---------+ | userId | eventId | +--------+---------+ | 104 | 43 | | 104 | 44 | | 102 | 43 | | 101 | 43 | | 101 | 44 | +--------+---------+
發表您的意見,表格結構等所以我們知道你在用什麼 – 2014-08-27 09:00:45
這有幫助嗎? – Martt 2014-08-27 09:27:56
好多了,歡呼:) – 2014-08-27 09:30:46