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:
Kann mir da jemand helfen?
[gelöst] ORDER BY bringt Fehler
Moderator: Moderatoren
[gelöst] ORDER BY bringt Fehler
Zuletzt geändert von hk3003 am So, 12.03.2023 11:16, insgesamt 1-mal geändert.
Re: ORDER BY bringt Fehler
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.
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.
Re: ORDER BY bringt Fehler
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
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
Re: ORDER BY bringt Fehler
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:
Die GUI macht daraus im Hintergrund
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:
Sobald Du aber der inneren Abfrage, die hier mit dem Alias "a" versehen ist, eine Sortierung mit gibst, streikt die interne HSQLDB:
funktioniert nicht.
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
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"
Code: Alles auswählen
SELECT "Abfrage1"."ID","Abfrage1"."Name" … FROM
( SELECT "tbl_Personen"."ID","tbl_Personen"."Name",… FROM "tbl_Personen" ) AS "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"
Code: Alles auswählen
SELECT * FROM (SELECT * FROM "tbl_Personen" ORDER BY "Name" ASC) AS "a"
Code: Alles auswählen
SELECT * FROM (SELECT * FROM "tbl_Personen") AS "a" ORDER BY "Name" ASC
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
Re: ORDER BY bringt Fehler
Hallo Robert,
vielen Danke für die Erklärungen,
lg heinz
vielen Danke für die Erklärungen,
lg heinz