嵌套的SQL查询与数
问题描述:
我有一个任务,并琢磨,并在同一时间击退我的病了几个小时之后,我放弃了我的猜测,任务是不可能的:嵌套的SQL查询与数
我是只打印出至少由两位作曲家组成的CD名称。所有这些信息存储在3个表格中: cd(具有cdnr(键)和名称),aufnahme(具有曲目(键:cdnr和snr(片段ID)))和stueck(具有作曲家ID(knr )和键SNR)
唯一soulution我能想到的,指望其明显的排序cdnr和KNR每个cdnr子查询的元组,但似乎我无法从初始查询通过cdnr:
select a.cdnr,a.name
from cd a,aufnahme b,stueck c
where a.cdnr=b.cdnr
and b.snr=c.snr
and (
select count(*) from (
select distinct aufnahme.cdnr,stueck.knr
from aufnahme,stueck
where aufnahme.snr=stueck.snr
and aufnahme.cdnr=a.cdnr
)
)<>1029381
group by a.cdnr,a.name,c.knr
如果有人可以帮助我,我会非常感谢。
模式:
KOMPONIST (KNR, NAME, VORNAME, GEBOREN, GESTORBEN)
STUECK (SNR, KNR ! KOMPONIST, TITEL, TONART, OPUS)
CD (CDNR, NAME, HERSTELLER, ANZ CDS, GESAMTSPIELZEIT)
AUFNAHME (CDNR ! CD, SNR ! STUECK, ORCHESTER, LEITUNG)
SOLIST ((CDNR, SNR)! AUFNAHME, NAME, INSTRUMENT)
编辑: 小时后(和良好的睡眠),我仍然没有解决这一个线索。所有的建议 - 起初似乎是一个好的开始 - 有一个我无法想象的问题:他们试图将一个表分组。但是这样做是行不通的,因为表STUECK没有分组(snr是主键,是外键)。所以STUECK和AUFNAHME必须合并,然后清楚的knr被统计,并且在那里我迷路了。
我知道它的作业,但我还是希望有人能帮助我..
答
你猜这是不可能???我无法抗拒。
SELECT cd.name
FROM cd
WHERE cd.CDNR IN
(
SELECT CDNR
FROM AUFNAHME
GROUP BY CDNR
HAVING COUNT(SNR) = 2
)
因为它的作业:暗示是使用一个作曲家,一组和一个条款。 – Andrew
@alex - 您应该发布架构。我(我想我们大多数人)不知道aufnahme或stueck意味着什么。 –
@Lieven - 你是对的,这是更可用。安德鲁 - “唯一的解决办法”确实是双曲线。我也尝试了过去的几个小时。我只是不明白我应该在什么时候算作曲家。还有最后一个提示:这很难吗?还是我错过了显而易见的? ;) – alex