-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   

我怎样才能获得在所有类型中出版书籍的 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 回答