私はここで2人の従業員のスケジュールのテーブルを持っています。どのように私は日曜日に月曜日からの完全なスケジュールを持っている特定の従業員の行を取得しますので、基本的に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 |
件まで2016年8月15日から始まるこれは、出力が
| 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は月曜日と火曜日には、それはまた、検索されなければならないschedの持っている場合、EMP 2のエントリのみを取得する必要があります。
は、実際に私はCodeIgniterの中で、私はCodeIgniterのアクティブなレコード構文に翻訳するために管理してきた回答の助けを借りてこれを適用してい
を更新し、これが私のコードがどのように見えるかであるように:
$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
更新前はかなり良い質問でした。あなたの更新をロールバックする - 両方の答えをアップアップする - Mureiniksの回答を受け入れる - あなたのコードをデバッグする方法を学ぶ - あなたのON句で ';'を削除する –