Abfrage sortieren
Moderator: Moderatoren
Re: Abfrage sortieren
Das geht als (SQL-)Abfrage nur bei wenigen DBMS, z.B. HSQL 2.0/H2 per GROUP_CONCAT-Befehl ...
Welches benutzt Du?
Welches benutzt Du?
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Re: Abfrage sortieren
Hallo sloopywoo1,
Du könntest Du das in der Art lösen:
Gruß Barlee
Du könntest Du das in der Art lösen:
Code: Alles auswählen
SELECT DISTINCT
"Datum"
,(SELECT "Name" FROM "Deine_Tabelle" WHERE "Datum" = "a"."Datum" AND "Aufgabe" = 'H') AS "H"
,(SELECT "Name" FROM "Deine_Tabelle" WHERE "Datum" = "a"."Datum" AND "Aufgabe" = '#1') AS "#1"
,(SELECT "Name" FROM "Deine_Tabelle" WHERE "Datum" = "a"."Datum" AND "Aufgabe" = '#2') AS "#2"
,(SELECT "Name" FROM "Deine_Tabelle" WHERE "Datum" = "a"."Datum" AND "Aufgabe" = '#3') AS "#3"
FROM "Deine_Tabelle" "a"
Re: Abfrage sortieren
Aloha
Willst Du uns den Syntax Error nicht verraten? Ansonsten muss man erstmal davon ausgehen, dass Du keine Tabelle namens "Deine_Tabelle" in Deiner Datenbank hast...Sloopywoo1 hat geschrieben:leider bekomme ich nur einen Syntax error.
Wenn Du nicht Base lediglich als Frontend benutzen willst, um z.B. auf einen MySQL-Server zuzugreifen, wirst Du wohl nicht um ein Workaround der von Barlee geposteten Art herumkommen.Sloopywoo1 hat geschrieben:Hast du sonst noch eine Idee.
Re: Abfrage sortieren
Es könnte folgendes sein:
Dein Select-Befehl hat mehrere Unterabfragen, die jeweils nur ein(!) Datensatzfeld und Datensatz, ergo nur einen String liefern; damit können sie überhaupt als "Datenfeld" in der übergeordneten Abfrage herhalten. Wenn nun aber nur eine Unterabfrage mehrere Datensätze liefert, "crached's"!
Also, bei dem "heimischen Planspiel" trat dieser Fehler noch nicht auf, weil zu jedem Datum genau ein H, ein 1 usw geliefert wurden.
Abhilfe könnte - je nach DB - Select TOP 1 "Name" ... in jeder Unterabfrage schaffen oder auch ein geeignetes aggregieren.
Hilft's?
Dein Select-Befehl hat mehrere Unterabfragen, die jeweils nur ein(!) Datensatzfeld und Datensatz, ergo nur einen String liefern; damit können sie überhaupt als "Datenfeld" in der übergeordneten Abfrage herhalten. Wenn nun aber nur eine Unterabfrage mehrere Datensätze liefert, "crached's"!
Also, bei dem "heimischen Planspiel" trat dieser Fehler noch nicht auf, weil zu jedem Datum genau ein H, ein 1 usw geliefert wurden.
Abhilfe könnte - je nach DB - Select TOP 1 "Name" ... in jeder Unterabfrage schaffen oder auch ein geeignetes aggregieren.
Hilft's?
Zuletzt geändert von herz4 am Sa, 13.11.2010 07:50, insgesamt 1-mal geändert.
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Re: Abfrage sortieren
Alle "Select "Name" ..."-Teile um den Einschub "TOP 1" zu "Select TOP 1 "Name" ..." verändern.
Du bist Dir damit hoffentlich im Klaren, dass damit von den bei der jeweiligen Unterabfrage ermittelten Namen der jeweilig zufällig(!) erste übernommen wird - alle anderen fehlen.
Du bist Dir damit hoffentlich im Klaren, dass damit von den bei der jeweiligen Unterabfrage ermittelten Namen der jeweilig zufällig(!) erste übernommen wird - alle anderen fehlen.
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Re: Abfrage sortieren
Man kann mit SQL fast alles machen - vielleicht auch Deine Probleme lösen.
Ich habe Schwierigkeiten, Dich und Dein Anliegen zu verstehen. Z. B. könnte es Dir helfen, meinen Vorschlag mit TOP 1 einfach mal auszuprobieren. Es besteht dabei keinesfalls die Gefahr, dass man dadurch weniger Ahnung von SQL + Base bekommt. Du würdest eventuell feststellen, dass tatsächlich viele Datensätze ausgegeben werden, zu jedem Datum einer! Nur von den Namen siehst Du nur die ersten(Mehrzahl!)!
Wenn Du mehr Hilfe willst, solltest Du zunächst Dein Daten(!)-Problem ausführlichst beschreiben.
Ich habe Schwierigkeiten, Dich und Dein Anliegen zu verstehen. Z. B. könnte es Dir helfen, meinen Vorschlag mit TOP 1 einfach mal auszuprobieren. Es besteht dabei keinesfalls die Gefahr, dass man dadurch weniger Ahnung von SQL + Base bekommt. Du würdest eventuell feststellen, dass tatsächlich viele Datensätze ausgegeben werden, zu jedem Datum einer! Nur von den Namen siehst Du nur die ersten(Mehrzahl!)!
Wenn Du mehr Hilfe willst, solltest Du zunächst Dein Daten(!)-Problem ausführlichst beschreiben.
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Re: Abfrage sortieren
Hey sloopywoo1,
ich muss Herz4 Recht geben! Beschreibe Dein Anliegen umfassend. Die Tatsache, dass je Datum mehrere Einträge für H, #1, #2, #3 vorkommen können, ging aus Deinem Ursprungsbeitrag nicht hervor. Wie willst Du mit diesen Einträgen umgehen? Wie stellst Du Dir eine Ergebnistabelle vor, wenn doppelte Einträge vorhanden sind?
Bringe ein Beispiel und man kann Dich ggf. gezielt auf die richtige Spur bringen.
Gruß Barlee
ich muss Herz4 Recht geben! Beschreibe Dein Anliegen umfassend. Die Tatsache, dass je Datum mehrere Einträge für H, #1, #2, #3 vorkommen können, ging aus Deinem Ursprungsbeitrag nicht hervor. Wie willst Du mit diesen Einträgen umgehen? Wie stellst Du Dir eine Ergebnistabelle vor, wenn doppelte Einträge vorhanden sind?
Bringe ein Beispiel und man kann Dich ggf. gezielt auf die richtige Spur bringen.
Gruß Barlee
Re: Abfrage sortieren
Hallo sloopywoo,
Eine Einschränkung auf Jahre ist nicht schlimm. Hänge an das Ende Deiner Abfrage einfach an:
Du wirst dann beim Ausführen der Abfrage nach einem Wert gefragt. Oder - wenn Du es fest definieren möchtest:
Gruß Barlee
Eine Einschränkung auf Jahre ist nicht schlimm. Hänge an das Ende Deiner Abfrage einfach an:
Code: Alles auswählen
WHERE YEAR("Datum") = :Jahr
Code: Alles auswählen
WHERE YEAR("Datum") = 2010
Re: Abfrage sortieren
Hallo sloopywoo1,
da musst Du Dir die Sortierung erstmal "bauen". Zum Beispiel so:
In diesem Fall musst Du wegen des CASE WHEN unter Berabeiten "SQL Kommando direkt ausführen" aktivieren. Alle Spaltennamen, Tabellennamen und Aliase in doppelte Anführungsstriche setzen!
Gruß Barlee
da musst Du Dir die Sortierung erstmal "bauen". Zum Beispiel so:
Code: Alles auswählen
... ORDER BY "Datum", CASE WHEN "Aufgabe" = 'H' THEN 0 ELSE "Aufgabe" END
Gruß Barlee