Mysql 选择2个表是否不返回结果?
我有两张桌子: 表“annonce”(房地产广告): 表“免费天数”(所有广告的免费天数): 我想选择所有在开始日期和结束日期之间只有空闲天数的可用广告,我必须在该日期之间的每一天进行检查 请求:Mysql 选择2个表是否不返回结果?,mysql,sql,Mysql,Sql,我有两张桌子: 表“annonce”(房地产广告): 表“免费天数”(所有广告的免费天数): 我想选择所有在开始日期和结束日期之间只有空闲天数的可用广告,我必须在该日期之间的每一天进行检查 请求: SELECT DISTINCT `annonce`.`idAnnonce`, `annonce`.`reference` FROM `annonce`, `freeDays` WHERE `annonce`.`idAnnonc
SELECT DISTINCT
`annonce`.`idAnnonce`, `annonce`.`reference`
FROM
`annonce`, `freeDays`
WHERE
`annonce`.`idAnnonce` = `freeDays`.`idAnnonce`
AND
`freeDays`.`date` = '2015-06-06'
AND
`freeDays`.`date` = '2015-06-07'
不返回结果。我的错误在哪里?不可能两个日期都相等
SELECT DISTINCT a.idAnnonce, a.reference
FROM annonce a
INNER JOIN freeDays f ON a.idAnnonce = f.idAnnonce
WHERE f.date BETWEEN '2015-06-06' AND '2015-06-07'
马特所说的是正确的。您也可以选择这样做:
SELECT DISTINCT a.idAnnonce, a.reference
FROM annonce a
INNER JOIN freeDays f ON a.idAnnonce = f.idAnnonce
WHERE f.date IN('2015-06-06','2015-06-07')
或者像这样:
SELECT DISTINCT a.idAnnonce, a.reference
FROM annonce a
INNER JOIN freeDays f ON a.idAnnonce = f.idAnnonce
WHERE f.date ='2015-06-06' OR f.date ='2015-06-07'
这将为您提供与在
之间使用相同的结果,您的WHERE子句正在请求不可能
您请求的行中的“空闲日”。“日期”值同时为2015-06-06和2015-06-07
AND
freeDays.date = '2015-06-06'
AND
freeDays.date = '2015-06-07'
您需要在以下两者之间使用:
freeDays.date BETWEEN '2015-06-06' AND '2015-06-07'
AND
freeDays.date = '2015-06-06'
OR
freeDays.date = '2015-06-07'
…和('2015-06-06','2015-06-07')中的自由日
日期
绝对有所有可能的解决方案,我只在两者之间使用,因为他们在问题中指出“开始日期和结束日期之间只有自由日”这让我相信这可能需要一个范围,而不是具体的dates@Matt:仅针对OP存在的问题提供备选方案。你的答案是首选的OneHank,但如果我在两个日期之间有一个“洞”:2015-06-06;2015-06-07 ; 2015-06-09. 广告会被选中吗?乌云,操纵错误:如果我在两个日期之间有一个“洞”:2015-06-06;2015-06-07 ; 2015-06-09. 将选择广告?@greg030然后您将使用第一个和最后一个日期,例如2015-06-06和2015-06-09之间的
是的,我理解。但在这个山谷里,一天不见了。所以我不希望这一次被选中。也许我应该提出新的问题,更具体一些。非常感谢您的帮助:)
AND
freeDays.date = '2015-06-06'
AND
freeDays.date = '2015-06-07'
freeDays.date BETWEEN '2015-06-06' AND '2015-06-07'
AND
freeDays.date = '2015-06-06'
OR
freeDays.date = '2015-06-07'