0
我想知道這個查詢是否正確。我試圖選擇最近一次日誌條目(或者如果該人從未登錄過該事件的情況下爲NULL)的人(姓名/電子郵件),則每個人每天發佈的事件數量少於n天。這裏是表約束:我想知道這個MySQL查詢是否正確? (MySQL加入好玩!)
- 事件具有唯一的ID,但可以有多個日誌條目。
- 一個事件可以有多個員工。
- 工作人員可以分配到多個事件。
- 工作人員只會記錄他/她所屬的事件。
- 如果工作人員是事件的一部分,「0」將在date_dropped_event字段中。如果工作人員退出事件,這將變爲非零時間戳。如果工作人員稍後重新加入活動,則會使用「0」時間戳創建新行。
我使用下面的查詢:
SELECT
max(`log`.`date_added`) AS `logdate`,
`log`.`description`,
`eventppl`.`staff_id`,
`staff`.`name`,
`staff`.`email`,
`event`.`name`,
`event`.`deleted`
FROM `events` AS `event`
LEFT JOIN `logs` AS `log` ON `log`.`event_id` = `event`.`event_id`
LEFT JOIN `events_people` AS `eventppl` ON `event`.`event_id` = `eventppl`.`event_id`
LEFT JOIN `staff` AS `staff` ON `eventppl`.`staff_id` = `staff`.`staff_id`
WHERE
`event`.`deleted` = 0 AND
`eventppl`.`date_left_event` = 0 AND
DATE(FROM_UNIXTIME(`log`.`date_added`)) <= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY `event`.`name`
我有以下表結構:
日誌
log_id | main_event_id | description | date | staff_id
1 1 log entry timestamp 11199
2 1 log entry timestamp 11199
3 1 log entry timestamp 11127
4 2 log entry timestamp 11199
5 2 log entry timestamp 11199
事件
event_id | name | deleted
1 EVENT_name1 0
2 Event_name2 0
3 Event_name3 1
events_people(11199)後重新加入
event_id | staff_id | date_left_event
1 11199 234234234
1 11126 0
1 11125 0
1 11199 0
2 11199 0
3 11199 0
人員
staff_id | name | email
11125 john [email protected]
11126 jane [email protected]
,這似乎是拉了很多空條目,事情是不正確的。當我試圖限制到一個已知的工作人員的ID,使結果更易於管理你的查詢給我的結果不正確,我的作品(但我不知道它是否適用於所有情況)。要過濾我遵循你的模式,並做了:「左加入'events_people'因爲'eventppl'ON'event'.'event_id' ='eventppl'.'event_id'和'eventppl'.'date_left_event' = 0 AND'eventppl' .'staff_id' = KNOWN_STAFF_ID「 –