【发布时间】:2016-04-11 18:23:00
【问题描述】:
说实话,这是作业的一部分,虽然不是那么重要,但仍然如此。 所以,假设我们有以下表格:
Song Singer_prod
composer title singer sing_title
A a1 S1 b1
A a2 S3 c3
B b1 S3 c1
C c1 S1 a1
C c2 S1 a2
C c3 S3 c2
S2 a1
现在,问题是选择那些每首歌曲都只有一位歌手演唱过的作曲家。 例如,作曲家B只有一个标题b1,只有S1演唱。
另外,作曲家 C 写了 c1, c2,c3,全部由 S3 演唱。 这两位作曲家应该会出现在结果中。
相比之下,在作曲家的A歌曲中,a2仅由S1演唱,而a1两人均演唱S1 和 S2,因此 A 不应出现在结果中。
我已经尝试了无数的嵌套 SELECTS、GROUP BY 和 WHERE 组合,但到目前为止都没有成功。我唯一确定的是某处应该需要 count(singer)=1,但到目前为止使用无果。
任何帮助将不胜感激!
【问题讨论】:
-
向我们展示您迄今为止的尝试
-
到目前为止,我最好的尝试大致是 Deluca 在下面回答的内容,例如:SELECT composer,singer, title FROM song INNER JOINsinger_prod ON song.title=singer_prod.sing_title GROUP BY composer HAVING count(tragoudistis )=1;不幸的是,它仍然没有返回我所希望的。无论如何,感谢您的关注,希望我能接近!
-
如果您解释为什么它没有返回您希望的内容以及返回的内容与您的预期内容,将会很有帮助。
-
抱歉耽搁了。我发现需要的是计数中的“DISTINCT”,count(distinct歌手)=1;由于某种原因,我并不完全清楚!