gpt4 book ai didi

mysql - 如果满足所有条件,SQL 获取行

转载 作者:可可西里 更新时间:2023-11-01 08:10:01 25 4
gpt4 key购买 nike

我这里有一张 2 名员工时间表的表格。我将如何检索具有从 星期一星期日 并从 2016-08-15 的完整时间表的某个员工的行strong>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-08-152016-08-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)

关于mysql - 如果满足所有条件,SQL 获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39053633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com