Datum sortieren > Datum mit NUL aber nach unten

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Datum sortieren > Datum mit NUL aber nach unten

Beitrag von F3K Total »

Hallo Frank,
meine Idee dazu wäre eine zusätzliche "Sortierspalte" anzulegen:
SELECT "ID1" AS "ID1", "Kunde" AS "Kunde", "Einsatzort" AS "Einsatzort", "TerminDatum" AS "TerminDatum", ifnull( "TerminDatum", '2300-12-31' ) AS "Sortierdatum","TerminZeit" AS "TerminZeit", "FertigBisDatum" AS "FertigBisDatum", "FertigBisZeit" AS "FertigBisZeit", "Aufgabe" AS "Aufgabe", "Bemerkung" AS "Bemerkung", "Aufraggeber" AS "Aufraggeber", "Telefon" AS "Telefon", "Erledigt" AS "Erledigt", "ErledigtDatum" AS "ErledigtDatum", "Notfall" AS "Notfall", "BemerkungMonteur" AS "BemerkungMonteur", "Monteur" AS "Monteur", "IstInArbeit" AS "IstInArbeit", "ZeitFenster" AS "ZeitFenster" FROM "Auftrag" AS "Auftrag" WHERE "Erledigt" = 0 ORDER BY "Sortierdatum" ASC, "TerminZeit" ASC
Diese Version funktioniert aber nur bis zum 31.12.2300 :D
Gruß R
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Datum sortieren > Datum mit NUL aber nach unten

Beitrag von DPunch »

Aloha

Noch kürzer:
In Deinem ursprünglichen Code nur

Code: Alles auswählen

WHERE "Erledigt" = 0 ORDER BY "TerminDatum" ASC, "TerminZeit" ASC
ändern zu

Code: Alles auswählen

WHERE "Erledigt" = 0 ORDER BY COALESCE("TerminDatum",'9999-12-31') ASC, "TerminZeit" ASC 
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Datum sortieren > Datum mit NUL aber nach unten

Beitrag von F3K Total »

Hallo DPunch,
was ist denn der Unterschied zwischen "ifnull" und "coalesce"?
Habe anhand Deines Beispieles herausgefunden, dass auch dieser Code funktioniert:

Code: Alles auswählen

WHERE "Erledigt" = 0 ORDER BY ifnull("TerminDatum",'9999-12-31') ASC, "TerminZeit" ASC 
Gruß R
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Datum sortieren > Datum mit NUL aber nach unten

Beitrag von DPunch »

Aloha
F3K Total hat geschrieben:was ist denn der Unterschied zwischen "ifnull" und "coalesce"?
In der Theorie sollte es da normalerweise keinen geben (abgesehen davon, dass man per COALESCE mehrere Ausdrücke, getrennt per Komma, auswerten kann).
Ich habe ifnull allerdings noch nie benutzt, daher kann ich zum Verhalten in der Praxis nichts sagen, und daher habe ich die Schreibweise natürlich auch nicht bei meinem Vorschlag verwendet.
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Datum sortieren > Datum mit NUL aber nach unten

Beitrag von F3K Total »

Hi DPunch,
habe ich das richtig verstanden,

Code: Alles auswählen

coalesce (A1,A2,A3,'Müller') 
setzt A1, A2, A3 auf 'Müller', wenn null?
Gruß R

Nachtrag aus dem HSQL-Guide:
IFNULL( <value expr 1>, <value expr 2> )
Returns <value expr 1> if it is not null, otherwise returns <value expr 2>. The type of both arguments must
be the same. Equivalent to SQL Standard COALESCE(<value expr 1>, <value expr 2>) function. (JDBC)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Datum sortieren > Datum mit NUL aber nach unten

Beitrag von DPunch »

Aloha
F3K Total hat geschrieben:Hi DPunch,
habe ich das richtig verstanden,

Code: Alles auswählen

coalesce (A1,A2,A3,'Müller') 
setzt A1, A2, A3 auf 'Müller', wenn null?
Mag nur eine Frage der Formulierung sein, aber so wie ich Deine Frage verstehe, nicht ganz korrekt.
COALESCE gibt den ersten Wert zurück, der nicht NULL ist.
Insofern würde entweder A1, wenn A1 NULL, dann A2, wenn A2 auch NULL, dann A3, wenn A3 auch NULL, dann 'Müller' zurückgegeben.
"Gesetzt" wird da nichts.
F3K Total hat geschrieben:Equivalent to SQL Standard COALESCE
Ja, wie gesagt, abgesehen von der Möglichkeit, bei COALESCE mehrere Daten auszuwerten, sollten die beiden Formulierungen in der Theorie gleich funktionieren.
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Datum sortieren > Datum mit NUL aber nach unten

Beitrag von F3K Total »

Nu hab ichs verstanden,
Vielen Dank
Gruß R
Antworten