I have searched through stackoverflow for about an hour without finding a solution for my problem.
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;
when I use the command source test.sql, I get this error message back:
ERROR 1054 (42S22) Unknown column 'Schueler.Snummer' in 'having clause'
The column exists and I do not know what is wrong.
Is anyone able to fix it?
You probably want:
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;
You should use JOIN
syntax instead of comma syntax.
Your GROUP BY
clause should match SELECT
clause or use aggregation functions.
EDIT:
I don't know any reason why not to use JOIN
but if you need use:
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;