[gelöst] ORDER BY bringt Fehler

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

hk3003
**
Beiträge: 36
Registriert: Mo, 31.12.2007 14:19

[gelöst] ORDER BY bringt Fehler

Beitrag von hk3003 »

Hallo Forum,
ich habe 4 verschachtelte Abfragen mit und ohne Gruppierung welche fehlerfrei laufen. Wenn ich nun eine Sortierung eines Feldes in einer dieser Abfragen hinzufüge, bringt die Folgeabfrage immer den Fehler:
Screenshot 2023-03-09 181619.png
Screenshot 2023-03-09 181619.png (27.02 KiB) 1339 mal betrachtet
Kann mir da jemand helfen?
Zuletzt geändert von hk3003 am So, 12.03.2023 11:16, insgesamt 1-mal geändert.
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: ORDER BY bringt Fehler

Beitrag von RobertG »

Du kannst keine Sortierung in einer Unterabfrage unterbringen, die Du als Datenquelle für die äußere Abfrage nutzt. Die Sortierung gehört in die äußere Abfrage.
Also zum Schluss
ORDER BY "Bezeichnung" ASC
und in der Klammer die entsprechende Sortierung raus nehmen.
Das mit einer Abfrage, die auf eine andere Abfrage zugreift, funktioniert hier nur bedingt. Du siehst ja, was für ein Code daraus gemacht wird.
hk3003
**
Beiträge: 36
Registriert: Mo, 31.12.2007 14:19

Re: ORDER BY bringt Fehler

Beitrag von hk3003 »

Danke, jetzt funktioniert es!
Ist es nicht üblich dass Abfragen auf Abfragen zugreifen? Aber wie soll ich einen in der Abfrage erstellten Wert in der gleichen Abfrage
für weitere Berechnungen verwenden?
lg heinz
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: ORDER BY bringt Fehler

Beitrag von RobertG »

Hallo Heinz,

sicher kannst Du von einer Abfrage auf eine andere Abfrage zugreifen. Die Base GUI macht Dir anschließend den entsprechenden Code:
Angenommen Du hast eine Abfrage1 und greifst darauf mit Abfrage2 zu.
In Abfrage2 steht dann als SQL-Code:

Code: Alles auswählen

SELECT * FROM "Abfrage1"
Die GUI macht daraus im Hintergrund

Code: Alles auswählen

SELECT  "Abfrage1"."ID","Abfrage1"."Name" …  FROM 
( SELECT  "tbl_Personen"."ID","tbl_Personen"."Name",…  FROM "tbl_Personen" ) AS "Abfrage1"
Das bedeutet: Sie packt die erste Abfrage in eine Klammer und benennt den Inhalt mit einem Alias, dem Namen der Abfrage "Abfrage1".
Du kannst also ohne Umwege auch direkt eine Abfrage bauen, die auf eine interne Abfrage zugreift:

Code: Alles auswählen

SELECT * FROM (SELECT * FROM "tbl_Personen") AS "a"
Sobald Du aber der inneren Abfrage, die hier mit dem Alias "a" versehen ist, eine Sortierung mit gibst, streikt die interne HSQLDB:

Code: Alles auswählen

SELECT * FROM (SELECT * FROM "tbl_Personen" ORDER BY "Name" ASC) AS "a"
funktioniert nicht.

Code: Alles auswählen

SELECT * FROM (SELECT * FROM "tbl_Personen") AS "a" ORDER BY "Name" ASC
funktioniert.
Wenn ich das z.B. mit dem direkten Treiber und der MariaDB mache, dann kommt keine Fehlermeldung. Es wird eben einfach nicht sortiert sondern nur die Sortieranweisung der äußeren Abfrage berücksichtigt.

Gruß

Robert
hk3003
**
Beiträge: 36
Registriert: Mo, 31.12.2007 14:19

Re: ORDER BY bringt Fehler

Beitrag von hk3003 »

Hallo Robert,
vielen Danke für die Erklärungen,
lg heinz
Antworten