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 に答える