0

如果我取出 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
4

1 回答 1

0

您加入的字段中一定缺少某些内容。您在 Image 表中看到的记录可能在 Movie 表中没有匹配的 imageID,或者在 MovieHasImage 表中没有匹配的记录。如果记录没有匹配的值,则执行内部连接会导致记录丢失。

解决此类问题的最简单方法是从您知道它存在的地方追溯它。您可以对表进行左外连接,也可以单独查询每个表以查看它们是否具有您要查找的值。

于 2013-09-26T12:54:01.283 回答