繁体   English   中英

仅当它们具有多个记录时才选择记录

[英]Only select records when they have multiple records

我想知道是否有可能从数据库中选择一些记录,这些记录至少有3条与查询匹配的记录?

例如。 我目前有一门课程,其中有20个不同的地点,并且都有3个日期:

路线1:阿姆斯特丹地点日期:2013年1月9日-2013年3月9日-2013年10月10日

路线2:阿姆斯特丹地点日期:2013年10月10日-2013年11月10日-2013年12月10日

我将日期分别保存在数据库中。 现在,当我选择今天和更高日期的日期时,我只会得到课程1的最后日期(课程2的第一个)。 那不是我想要的

我希望它检查前两个日期是否也与语句匹配,然后可以选择第一个日期。 因此,在此示例中,我只希望选择第二门课程。

这是我的查询:

$query = "SELECT locaties_datum.id, locaties_datum.cursus_id, 
locaties_datum.locatie_id, locaties_datum.van, locaties_datum.code, 
locaties.plaats, locaties.link FROM locaties, locaties_datum WHERE 1 = 1 AND 
locaties_datum.locatie_id = locaties.locatie_id AND 
locaties_datum.van > '". strtotime("now") ."' AND 
locaties.active = '1' AND 
locaties_datum.cursus_id = '9' AND 
locaties.locatie_id = '71' 
GROUP BY locaties_datum.code 
ORDER BY locaties_datum.van ASC ";

可以做我想做的吗?

这可能是您想要的:

SELECT d.id, d.cursus_id, d.locatie_id, d.van, d.code, l.plaats, l.link
FROM locaties AS l
INNER JOIN locaties_datum AS d ON d.locatie_id = l.locatie_id
WHERE l.active = '1'
AND d.cursus_id = '9'
AND l.locatie_id = '71'
AND EXISTS (SELECT 1 FROM locaties_datum AS sd WHERE sd.locatie_id = d.locatie_id AND sd.van > ?)
ORDER BY d.van ASC

如果locaties_datum至少有一行的van大于提供的参数(例如,TODAY),则将选择所有locaties及其所有locaties_datum

附带说明:您应该将日期作为参数传递给查询,或者使用sql-server的内置函数。 不要将其插值到查询字符串中。 另外,你的intsstrings吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM