【发布时间】:2013-09-26 04:53:10
【问题描述】:
如果我去掉 WHERE 子句,Join 乍一看似乎可以正常工作......并且 imageID 485 确实存在......但是,当我在下面插入 WHERE 子句时,我返回 0 个结果。
如何添加 WHERE 子句以正确处理 3 个表连接?
declare @imageID int
set @imageID = 485
SELECT Movie.movieID, Image.imageID, Image.filename, Image.imageFile
FROM MovieHasImage
JOIN Movie
ON MovieHasImage.movieID = Movie.movieID
JOIN Image
ON MovieHasImage.imageID = Image.imageID
WHERE Image.imageID = @imageID --HERE IS THE CAUSE OF THE ISSUE
GO
【问题讨论】:
-
你想达到什么目的?你只是从图像表中选择列,所以你可以这样做: SELECT imageID, filename, imageFile from Image where imageid = @imageid
-
当您需要输出的所有内容都来自表图像时,为什么所有这些联接?
-
不清楚是什么问题,你的问题很混乱。 WHERE 与 JOIN 无关——它只是限制返回的行。
-
如果我在这种情况下感到困惑,有两件事我会尝试帮助我弄清楚发生了什么:1.try
SELECT imageID, filename, imageFile from Image where imageid = @imageid(如@JohnBingham 所建议的那样。2.使用 select * 运行当前查询,并且没有 where 子句,特别注意其中包含图像的行。确保它们完全符合预期。我不知道第 2 步会显示什么,但它总是值得一试卡住时看看;) -
对不起,我的意思是包含 Movie 表 ID
标签: sql sql-server-2008 select relational-database