4

タイトルが紛らわしいことは知っていますが、それを説明するのに最適です。基本的に、2つの映画館を所有する会社の映画館リストWebサイトを開発しています。したがって、両方の映画館のデータを含む2つのテーブル「Films」と「Listings」を含むデータベースがあります。

フィルム名がリストに表示されている場合、1つのシネマのすべてのフィルムとそのデータを選択しようとしています(2つのシネマはすべてのフィルムを共有していますが、テーブルにはありますが、同じフィルムが表示されていない可能性があるため)

これが私が思いついたものですが、「SELECT DISTINCT」が複数の結果を返すと、明らかにtblFilmsのFilmNameと一致しないという問題が発生します。tblFilmsのすべてのFilmNameについてこの値を確認するにはどうすればよいですか?

SELECT * 
FROM tblFilms
WHERE FilmName = (SELECT DISTINCT FilmName FROM tblListings WHERE Cimema = 1)
4

2 に答える 2

15

INサブクエリが複数の値を返す場合に使用します。

SELECT * 
FROM tblFILMS 
WHERE FilmName IN (SELECT DISTINCT FilmName FROM tblListings WHERE Cimema = 1)

ティウスを解決する別の方法は、JOIN私が推奨する)を使用することです

SELECT  DISTINCT    a.* 
FROM    tblFILMS a
        INNER JOIN tblListings b
            ON a.FilmName = b.FilmName AND
                b.Cimema = 1

クエリの実行を高速化するには、両方のテーブルに on をINDEX追加します。FilmName

于 2013-03-06T16:27:29.617 に答える
1

テーブルのスキーマがある場合は、それが役立ちます。

そうは言っても、あなたが見たいのは JOIN キーワードだと思います。(内側/外側/左/など)。それがまさに JOIN の目的 (つまり、タイトル) です。

于 2013-03-06T16:29:22.983 に答える