2017-03-19 4 views

答えて

3

これを処理するためのいくつかの方法があります。この回答は、2つのテーブルの間にINNER JOINを使用しています。この参加により、table2の投稿者と一致しない投稿が削除されます。次に、各書店に集約して、すべての著者がtable1から残っていることを確認します。

SELECT t2.bookstore 
FROM table2 t2 
INNER JOIN table1 t1 
    ON t1.author = t2.author 
GROUP BY t2.bookstore 
HAVING COUNT(DISTINCT t2.author) = (SELECT COUNT(*) FROM table1) 

各著者はtable1に一度しか表示されないものとします。あまりにもそこに重複があるかもしれない場合は、このサブクエリを使用して作成者を数える必要があります。ここに

SELECT COUNT(DISTINCT author) FROM table1 

はデモ:

Rextester

0

あなただけを見つけるためにtable2ので集約を行う必要があります各書店にはどのくらい多くの作家がカバーしていますか?最後に、すべての著者を網羅するエントリを選択するためのフィルタリング条件(HAVING)。

SELECT [bookstore] 
     FROM [dbo].[table2] 
    GROUP BY [bookstore] 
    HAVING COUNT(DISTINCT [author]) = (SELECT COUNT(DISTINCT [author]) FROM [dbo].[table1]) 
+0

このクエリは、潜在的な問題です。 'table2'の特定の書店では、' table1'のものと一致しない著者が存在する可能性があります。もしそうなら、あなたの著者の数は歪んでいます。 –

関連する問題