2017-11-08 8 views
-4

は、私は、このテーブルを持っているとしましょう。クエリはどのように見えますか?は、多対多の関係上、単純なセレクト作成

+2

何かを試してみてください。まだ苦労している? https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-queryを参照してください。 – Strawberry

答えて

0

すべてのテーブルを共通の列で結合し、結果をcountry_idでグループ化し、グループごとに行数(または通貨)を以下のように数えます。

SELECT A.COUNTRY_ID, COUNT(*) NUMBER_OF_CURRENCY 
FROM COUNTRY A 
    INNER JOIN COUNTRY_CURRENCY B ON A.COUNTRY_ID = B.COUNTRY_ID 
    INNER JOIN CURRENCY C ON B.CURRENCY_ID=C.CURRENCY_ID 
GROUP BY A.COUNTRY_ID 
HAVING NUMBER_OF_CURRENCY > 1 ; 

優れたクエリは次のようになります。

SELECT COUNTRY_NAME 
FROM COUNTRY 
WHERE COUNTRY_ID IN (
        SELECT COUNTRY_ID 
        FROM COUNTRY_CURRENCY 
        GROUP BY COUNTRY_ID 
        HAVING COUNT(*) > 1 
        ); 
+1

...またはちょうど> 1。厳密に必要以上に多くのクエリがここにありますが、 – Strawberry

+0

@Strawberry私は2番目のクエリが必要であると思います。 – cdaiga

+0

解決策は簡単にすることができますが、国は国番号ではなく国を表示することを希望します – Strawberry