ednhzrd
ednhzrd

Reputation: 33

SQL: ERROR 1054 (42S22) Unknown column in having clause

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?

Upvotes: 0

Views: 2427

Answers (1)

Lukasz Szozda
Lukasz Szozda

Reputation: 175686

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;

Upvotes: 1

Related Questions