mysql查询条件

时间:2016-02-03 00:44:46

标签: php mysql

我有一个mysql数据库,这里是列;

日期

computerlab

只有2个可能的数据值进入computerlab列,A101或A102

但是,可能存在重复的数据行但具有不同的计算机数据

例如,

date = 3-15-16 computerlab = A101 period = 1

date = 3-15-16 computerlab = A102 period = 1

我的网页从接收多个时段1,3,5

的用户那里获得输入

这就是我需要的:

如果期间1或3或5包含A101和A102,则返回该日期

我认为这会起作用,但它不会

mysql_query("SELECT date FROM reservations WHERE period IN ($periods) AND lab in ('A101','A102') GROUP BY date HAVING COUNT(*) = 2");

1 个答案:

答案 0 :(得分:3)

我认为您需要按期间分组才能获得所需内容:

SELECT date, period
FROM reservations
WHERE period IN ($periods) AND lab in ('A101', 'A102')
GROUP BY period, date
HAVING COUNT(*) = 2;

这将检查给定时期是否同时具有两个实验室。您正在检查三个句点的集合恰好有两个条目。

嗯,我意识到你可能打算检查三个时期是否同时分配了两个实验室。如果是,请使用count(distinct)

SELECT date
FROM reservations
WHERE period IN ($periods) AND lab in ('A101', 'A102')
GROUP BY date
HAVING COUNT(DISTINCT lab) = 2;