我已经在stackoverflow中搜索了大约一个小时而没有为我的问题找到解决方案。
select Schueler.Vorname, Schueler.Nachname
from Schueler, SchuelerLernt, Lehrer, Instrumente
group by Schueler.Snummer
having Schueler.Snummer = SchuelerLernt.Snummer and
SchuelerLernt.Lnummer = Lehrer.Lnummer and
SchuelerLernt.Ibezeichnung = Instrumente.Ibezeichnung and
count(Ibezeichnung) > 1;
当我使用命令source test.sql时,我收到此错误消息:
ERROR 1054(42S22)未知专栏'Schueler.Snummer'中有' 条款“
该列存在,我不知道出了什么问题。
有人能解决吗?
答案 0 :(得分:0)
你可能想要:
select Schueler.Snummer, Schueler.Vorname, Schueler.Nachname
from Schueler
JOIN SchuelerLernt
ON Schueler.Snummer = SchuelerLernt.Snummer
JOIN Lehrer
ON SchuelerLernt.Lnummer = Lehrer.Lnummer
JOIN Instrumente
ON SchuelerLernt.Ibezeichnung = Instrumente.Ibezeichnung
group by Schueler.Snummer, Schueler.Vorname, Schueler.Nachname
having count(Ibezeichnung) > 1;
您应该使用JOIN
语法而不是逗号语法。
您的GROUP BY
子句应与SELECT
子句匹配或使用聚合函数。
修改强>
我不知道为什么不使用JOIN
,但如果您需要使用:
select Schueler.Snummer, Schueler.Vorname, Schueler.Nachname
from Schueler, SchuelerLernt, Lehrer, Instrumente
WHERE Schueler.Snummer = SchuelerLernt.Snummer
AND SchuelerLernt.Lnummer = Lehrer.Lnummer
AND SchuelerLernt.Ibezeichnung = Instrumente.Ibezeichnung
group by Schueler.Snummer, Schueler.Vorname, Schueler.Nachname
having count(Ibezeichnung) > 1;