-1

というテーブルがありますManuscript

BOOKID  AUTHORID BOOKNAME       GENRE   NOOFCOPIES  AMOUNT
B105    A102     Diagnosis      Journal 500         10000
B102    A102     The Essence... Fiction 110         11000
B106    A102     Clinical Sci.  Educat. 125         18750
B104    A103     Mind Games     Fiction 200         20000
B100    A102     Sublime        Fiction 100         10000
B101    A105     C Programming  Educati 125         18750
B103    A101     Scribe         Journal 500         10000
B107    A101     Clinical Chem. Educat. 125         54646
B108    A103     Clinical Chem. Educat. 125         54646   

すべての Genre で本を出版した AuthorId を取得するにはどうすればよいですか? 期待される出力A102

4

3 に答える 3

3

ジャンルが追加されても機能する一般的なクエリ、

select "AUTHORID"
  from table1
 group by "AUTHORID"
having count(distinct "GENRE") = (select count(distinct "GENRE") from table1)

上記のクエリへの SQLFIDDLE リンク

于 2013-02-08T09:16:53.353 に答える
2

ブルートフォースアプローチは次のようなものである可能性があります

SELECT DISTINCT AUTHORID
FROM Manuscript
WHERE AUTHORID IN 
  (SELECT AUTHORID FROM Manuscript WHERE GENRE LIKE 'Journal')
AND AUTHORID IN
  (SELECT AUTHORID FROM Manuscript WHERE GENRE LIKE 'Fiction')
AND AUTHORID IN
  (SELECT AUTHORID FROM Manuscript WHERE GENRE LIKE 'Education')
于 2013-02-08T09:13:56.233 に答える
1

可能な解決策は、さまざまなジャンルの数を取得し、それに基づいてフィルタリングすることです。

select 
  authorid, count(distinct genre)
from 
  Manuscript
group by 
  authorid
having 
  count(distinct genre) = (select count(distinct genre) from Manuscript)
于 2013-02-08T09:21:42.310 に答える