Abfrage sortieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Abfrage sortieren

Beitrag von herz4 »

Das geht als (SQL-)Abfrage nur bei wenigen DBMS, z.B. HSQL 2.0/H2 per GROUP_CONCAT-Befehl ...
Welches benutzt Du?
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage sortieren

Beitrag von Barlee »

Hallo sloopywoo1,

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"
Gruß Barlee
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Abfrage sortieren

Beitrag von DPunch »

Aloha
Sloopywoo1 hat geschrieben:leider bekomme ich nur einen Syntax error.
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:Hast du sonst noch eine Idee.
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.
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Abfrage sortieren

Beitrag von herz4 »

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?
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
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Abfrage sortieren

Beitrag von herz4 »

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.
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Abfrage sortieren

Beitrag von herz4 »

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.
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage sortieren

Beitrag von Barlee »

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
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage sortieren

Beitrag von Barlee »

Hallo sloopywoo,

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
Du wirst dann beim Ausführen der Abfrage nach einem Wert gefragt. Oder - wenn Du es fest definieren möchtest:

Code: Alles auswählen

WHERE YEAR("Datum") = 2010
Gruß Barlee
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage sortieren

Beitrag von Barlee »

Hallo sloopywoo1,

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
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
Antworten