1

映画には 3 つのカテゴリがあり、カテゴリごとに 1 つのテーブルがあります。アクションと呼ばれるテーブル、コメディと呼ばれるテーブル、ホラーと呼ばれるテーブル。各テーブルには「タイトル」と「ステータス」があります。「ステータス」が「新規」であるすべてのテーブルからすべてのタイトルを選択するにはどうすればよいですか?

私はこのようにしてみました:

SELECT
    action.title,
    comedy.title,
    horror.title
FROM
    action,
    comedy,
    horror
WHERE
    action.status = 'new' OR
    comedy.status = 'new' OR
    horror.status = 'new'

しかし、ステータスが新しいものでなくても、すべてのタイトルを取得します。JOIN を試しましたが、3 つのテーブルを正しい方法で結合する方法がわかりません。

4

2 に答える 2

2

キーワードを使用して試してくださいUNION

SELECT action.title
FROM action
WHERE action.status = 'new' 
UNION
SELECT comedy.title
FROM comedy
WHERE comedy.status = 'new' 
UNION
SELECT horror.title
FROM horror
WHERE horror.status = 'new'

UNION列数が同じ複数のクエリを組み合わせて、1 つの結果セットとして返します。

于 2013-08-15T12:28:39.667 に答える
1

new映画のタイトルについて各テーブルを個別にクエリし、UNIONそれらをまとめてクエリできます-

SELECT  action.title
FROM    action
WHERE   action.status = 'new'

UNION

SELECT  comedy.title
FROM    comedy
WHERE   comedy.status = 'new'

UNION

SELECT  horror.title
FROM    horror
WHERE   horror.status = 'new'

しかし、マットがコメントで言ったように、あなたのスキーマはうまく設計されていないようです。映画用のテーブルは 1 つだけで、別のカテゴリ テーブルと、このカテゴリと映画テーブルの間の関係が必要です。

于 2013-08-15T12:28:18.333 に答える