我在這裏有一張2名員工的時間表。我將如何獲取一定的員工具有不同於一個完整的時間表的行星期一到星期日和2016年8月15日開始高達2016年8月21日SQL如果滿足所有條件,則獲取行
| id | emp_id | date | day |
|----|--------|------------|-----|
| 1 | emp1 | 2016-08-17 | Wed |
| 2 | emp1 | 2016-08-18 | Thu |
| 3 | emp1 | 2016-08-19 | Fri |
| 4 | emp1 | 2016-08-20 | Sat |
| 5 | emp1 | 2016-08-21 | Sun |
| 6 | emp2 | 2016-08-15 | Mon |
| 7 | emp2 | 2016-08-16 | Tue |
| 8 | emp2 | 2016-08-17 | Wed |
| 9 | emp2 | 2016-08-18 | Thu |
| 10 | emp2 | 2016-08-19 | Fri |
| 11 | emp2 | 2016-08-20 | Sat |
| 12 | emp2 | 2016-08-21 | Sun |
所以基本上應該找回EMP 2只的條目這是輸出應該如何
| 6 | emp2 | 2016-08-15 | Mon |
| 7 | emp2 | 2016-08-16 | Tue |
| 8 | emp2 | 2016-08-17 | Wed |
| 9 | emp2 | 2016-08-18 | Thu |
| 10 | emp2 | 2016-08-19 | Fri |
| 11 | emp2 | 2016-08-20 | Sat |
| 12 | emp2 | 2016-08-21 | Sun |
但如果有EMP1週一和週二章附表也應該被檢索。
修訂
其實我在笨並與我已經設法把它翻譯成笨活動記錄語法的答案的幫助應用此,這是我的代碼看起來像:
$schedule = $this->db->query("SELECT *
FROM schedule
LEFT JOIN employees
ON employees.user_id = schedule.user_id;
WHERE schedule.user_id IN (SELECT user_id
FROM schedule
WHERE start >= '2016-08-15' and start <= '2016-08-21'
group by user_id
having count(*) = 7
); ");
if($schedule->num_rows() > 0) {
return $schedule->result_array();
} else {
return false;
}
順便說一句,我也有另一個表,需要加入時間表表。但是這似乎是錯誤的,因爲我得到了一個錯誤。我應該如何解決這個問題?
請註明您是否希望EMP2的所有條目或只在指定日期範圍內。 –
我只需要emp2在給定日期範圍內的條目 – Pretorian
在更新之前,這是一個相當好的問題。所以我建議你: - 回滾你的更新 - Upvote這兩個答案 - 接受Mureiniks答案 - 學習調試你的代碼 - 刪除你的ON子句中的';' –