SELECT Abteilungen.AbtNr vs AbtNr sollte identisch sein, erzeugt aber Fehlermeldung

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

SELECT Abteilungen.AbtNr vs AbtNr sollte identisch sein, erzeugt aber Fehlermeldung
Hallo!

Warum funktioniert diese SQL-Abfrage…

SELECT AbtNr, SUM(Gehalt) AS Gehaltssumme FROM Abteilungen NATURAL JOIN Angestellte GROUP BY AbtNr

aber folgende Abfrage nicht?

-- Statt SELECT AbtNr ist es nun Abteilungen.AbtNr SELECT Abteilungen.AbtNr, SUM(Gehalt) AS Gehaltssumme FROM Abteilungen NATURAL JOIN Angestellte GROUP BY AbtNr

Ich habe auch schon GROUP BY Abteilungen.AbtNr einzusetzen versucht, er bleibt jedoch bei derselben Fehlermeldung:[quote]An error occurred when executing the SQL command:
SELECT Abteilungen.AbtNr, SUM(Gehalt) AS Gehaltssumme
FROM Abteilungen
NATURAL JOIN Angestellte
GROUP BY AbtNr

user lacks privilege or object not found: ABTEILUNGEN.ABTNR [SQL State=42501, DB Errorcode=-5501]

Execution time: 0s

1 statement failed.[/quote]

Meine Tabellen-Schemata:

[code=sql]CREATE TABLE ABTEILUNGEN
(
ABTNR INTEGER PRIMARY KEY,
BEZEICHNUNG VARCHAR(40),
ORT VARCHAR(20)
);

CREATE TABLE ANGESTELLTE
(
PERSNR INTEGER,
VORNAME VARCHAR(20),
NACHNAME VARCHAR(30),
ABTNR INTEGER REFERENCES Abteilungen(AbtNr)
WOHNORT VARCHAR(30),
GEHALT INTEGER,
VORGESNR INTEGER REFERENCES Angestellte(PersNr)
);[/code]

Die Datenbank ist die, die auf StudOn von dem KonzMod-Kurs bereitgestellt wird: HSQLDB.

Vielen Dank!


Klingt so als würde hsql bei natural join die tabellenspezifischen spalten (Abteilungen.*) rauswerfen und nur noch die gemeinsamen Spalten behalten.

Warum stellt das für dich ein Problem dar?

1 Like

Hier gibts Dokumentation dazu: http://hsqldb.org/doc/guide/dataaccess-chapt.html#dac_joined_table


Danke für die Antwort!

Scheint zu stimmen, denn Folgendes funktioniert wiederum mit und ohne Abteilungen.:

SELECT [Abteilungen.]AbtNr, SUM(Gehalt) AS Gehaltssumme FROM Abteilungen JOIN Angestellte ON Angestellte.AbtNr = Abteilungen.AbtNr GROUP BY Abteilungen.AbtNr

[quote=yawkat]Warum stellt das für dich ein Problem dar?
[/quote]
Tut es nicht, hatte mich nur gewundert :slight_smile: