2017-09-01 4 views
0

SQLに問題があります。 私は以下のようなデータベース構造を持っています enter image description here すべてのmoviestarの名前と住所、女性(G = 'F')、住所= "Berlin" +すべてのスタジオの名前と住所= "ベルリン"も。住所で注文します。データベースに関するSQLクエリ

私の提案は次のとおりです。

SELECT * FROM 
    (SELECT name, address 
    FROM MovieStar 
    WHERE gender = 'F' 
    UNION 
    SELECT name, address FROM Studio) T 
WHERE T.address LIKE '%Berlin%' ORDER BY T.address; 
+1

私たちがあなたを助けるお手伝いができますあるサンプルデータと得ようとしている結果 – Mureinik

+0

私はDB構造を見ました。本当に名前をキーとして使用しているのであれば大きな問題があります。各テーブルには例と整数のIDを使用し、名前にはIDを使用せずにテーブルをリンクします。 –

+0

数字キーを使用する必要があります。同じ名前の映画が2つ、または同じ名前の星が2つある場合はどうなりますか? – SEarle1986

答えて

1

これはあなたのために働く必要があります。

SELECT name, address 
    FROM MovieStar 
    WHERE gender = 'F' AND address LIKE '%Berlin%' 
    UNION 
    SELECT name, address FROM Studio WHERE address LIKE '%Berlin%' 
ORDER BY address; 
+0

私の解決策tnxに近いようです。 –

0

あなたはこの

SELECT name, address from MovieStar WHERE gender='F' AND address LIKE '%Berlin%' 
UNION 
SELECT name, address from Studio WHERE address LIKE '%Berlin' 

を行うことができますし、あなたがあなたの例で行うようにサブクエリを使用したい場合、私はあなたがサブクエリのキーワード「と」追加する必要があると思います

SELECT * FROM 
    (SELECT name, address 
    FROM MovieStar 
    WHERE gender = 'F' 
    UNION 
    SELECT name, address FROM Studio) AS T 
WHERE T.address LIKE '%Berlin%' ORDER BY T.address; 

私は確信していませんが、メモリテーブルを作成して投影しているので、それはパフォーマンスにとっては良いことです。

+0

パフォーマンスに問題はありません。私はそれをテストすることができないので、私のソリューションが動作することを確認したいだけです。 –

+0

最初のクエリが機能します –

関連する問題