Abfrage sortieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Abfrage sortieren

Re: Abfrage sortieren

von Barlee » Mi, 17.11.2010 22:03

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

Re: Abfrage sortieren

von Barlee » So, 14.11.2010 00:17

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

Re: Abfrage sortieren

von Barlee » Sa, 13.11.2010 17:00

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

Re: Abfrage sortieren

von herz4 » Sa, 13.11.2010 16:26

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.

Re: Abfrage sortieren

von herz4 » Sa, 13.11.2010 07:44

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.

Re: Abfrage sortieren

von herz4 » Fr, 12.11.2010 17:08

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?

Re: Abfrage sortieren

von DPunch » Do, 11.11.2010 22:45

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.

Re: Abfrage sortieren

von Barlee » Do, 11.11.2010 19:49

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

Re: Abfrage sortieren

von herz4 » Do, 11.11.2010 17:56

Das geht als (SQL-)Abfrage nur bei wenigen DBMS, z.B. HSQL 2.0/H2 per GROUP_CONCAT-Befehl ...
Welches benutzt Du?

Nach oben