我想知道是否可以从数据库中选择至少有3条与查询匹配的记录?
例如。我目前有一个课程,有20个不同的地方,都有3个日期:
课程1:地点阿姆斯特丹日期:01-09-2013 - 03-09-2013 - 02-10-2013
课程2:地点阿姆斯特丹日期:10-10-2013 - 11-10-2013 - 12-10-2013
我在数据库中单独保存了日期。现在,当我选择今天和更高的日期时,我只获得课程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 ";
有可能做我想要的吗?
答案 0 :(得分:0)
这可能是你想要的:
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
至少有一行locaties_datum
大于提供的参数(例如TODAY),则会选择所有locaties_datum
及其所有van
。< / p>
作为旁注:您应该将日期作为参数传递给查询,或者使用sql-server的内置函数。不要将其插入查询字符串中。此外,您的ints
还是strings
?