关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
10个月前关门了。
改进这个问题
试图改变我的代码很多次,需要帮助这些错误,请!结果:不明确的列名:main.guides.guides\u id
SELECT *
FROM Guides
INNER JOIN Guides ON Guides_Countries.Guide_ID = Guides_Countries.Guide_ID
INNER JOIN Countries ON Countries.Country_ID = Guides_Countries.Country_ID
INNER JOIN Guides_Languages ON Guides.Guide_ID = Guides_Languages.Guide_ID
INNER JOIN Languages ON Languages.Language_ID = Guides_Languages.Language_ID
WHERE Countries.Name="Kazakhstan" AND (Languages.Name="German" OR Languages.Name="English") AND Guides.Guide_ID NOT IN
(SELECT Guide_ID
FROM GuidesUnavailableDates
INNER JOIN GuidesUnavailableDates ON GuidesUnavailableDates.UnDate_G_ID=Guides_UnDate.UnDate_G_ID
WHERE (Start_date<="21/06/2020" and End_date>="21/06/2020")
OR (Start_date<="30/06/2020" and End_date>="30/06/2020")
OR (Start_date>="21/06/2020" and End_date<="30/06/2020")
)
;
1条答案
按热度按时间rsaldnfx1#
有多个表名在列表中多次出现
FROM
条款。这就是你的问题所在。我想你想要:笔记:
Guide_Countries
不在你的房间里FROM
尽管列出Guides
有两次。IN
比多重的要简单得多OR
s。所有列都是限定的,因此很清楚它们来自哪个表。
所有表都有简单的表别名,即表名的缩写。
不需要一个
JOIN
在子查询中。使用格式良好的日期。
我猜奇怪的日期逻辑是为了找到一个重叠的时间段,所以我简化了逻辑(您还没有解释逻辑,因此这只是猜测,您的原始代码没有意义。)
我强烈建议使用
NOT EXISTS
使用子查询而不是NOT IN
. 但是,我没有更改这里的代码(主要是因为我不能真正知道子查询应该做什么)。