我有一个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");
答案 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;