mysql-如果满足所有条件,则提取行

我这里有一张2位员工的时间表表.我将如何检索某位员工的行,该行的工作日程从星期一到星期天完整,从2016-08-15开始到2016-08-21

| 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有星期一和星期二的时间表,则也应该检索它.

更新

实际上,我将其应用在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;
    }

顺便说一句,我还有另一个表需要与时间表表连接.但这似乎是错误的,因为我遇到了错误.我该如何解决?

解决方法:

在2016年8月15日至2016年8月21日之间有完整的时间表,意味着要安排7天.因此,您可以只检查在此时间范围内安排的天数,并确保有七个(不同的)天数:

SELECT *
FROM   schedule
WHERE  `date` >= '2016-08-15' AND 
       `date` <= '2016-08-21' AND
       emp_id IN (SELECT   emp_id
                  FROM     schedule
                  WHERE    `date` >= '2016-08-15' AND `date` <= '2016-08-21'
                  GROUP BY emp_id
                  HAVING   COUNT(DISTINCT `date) = 7)
上一篇:php-在Ubuntu上禁止CodeIgniter错误403访问


下一篇:php-如何在Codeigniter中使用IN-operator进行绑定查询