Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

ORDER BY über mehrere Spalten

Frage Entwicklung PHP

Mitglied: helmuthelmut2000

helmuthelmut2000 (Level 2) - Jetzt verbinden

11.12.2011 um 13:37 Uhr, 4841 Aufrufe, 6 Kommentare

Hallo,

Ich habe eine PHP-Seite die Daten aus einer MSSQL-DB auslesen soll.

Dort habe ich mehrere Spalten:

Name, Vorname, Datum1, Datum2, Datum3.
Mayer, Hans, 12.12.2011, NULL, NULL.
Müller, Peter, NULL, 06.12.2011,NULL.
Wagner, Peter, NULL, NULL, 07.12.2011.

Jetzt sollte die Sortierung so kommen:

Name, Vorname, Datum1, Datum2, Datum3.
Müller, Peter, NULL, 06.12.2011,NULL.
Wagner, Peter, NULL, NULL, 07.12.2011.
Mayer, Hans, 12.12.2011, NULL, NULL.

Es sollte nach Datum über mehrere Spalten Sortiert werden.
Geht das noch mit ORDER BY?
Mitglied: Berrnd
11.12.2011 um 15:46 Uhr
Hi,

ja, Beispiel: ;)
01.
select * 
02.
from dbo.test1 
03.
order by coalesce(Datum1, Datum2, Datum3)
Die Funktion COALESCE nimmt den ersten Wert, der nicht NULL ist.
Siehe http://msdn.microsoft.com/en-en/library/ms190349.aspx

Gruß - Bernd
Bitte warten ..
Mitglied: Biber
11.12.2011 um 15:50 Uhr
Moin helmuthelmut2000,

Rückfrage:
kann denn immer nur eine der Datumsspalten NOT NULL sein oder können dort auch z.B alle drei Spalten einen Datumswert beinhalten?

Grüße
Biber
Bitte warten ..
Mitglied: helmuthelmut2000
11.12.2011 um 19:42 Uhr
Hallo Biber,

Ja es können auch z.B. alle drei Spalten einen Datumswert haben.

Grüße Helmut
Bitte warten ..
Mitglied: helmuthelmut2000
12.12.2011 um 13:55 Uhr
Hallo,

Ich kann das auch so machen das immer nur in einer Spalte ein Datumswert ist.

Gibts dann eine Lösung?
Bitte warten ..
Mitglied: Biber
12.12.2011 um 15:09 Uhr
Moin helmuthelmut2000,

es gibt für alles eine Lösung

  • Wenn nur eine der drei Spalten ungleich NULL ist, dann passt Bernd-'s Lösung.
Fertig, Haken dran, gut is'.

  • wenn keine, eine, zwei oder drei mit Datumswerten gefüllt sein können
- UND-
  • vom ältesten zum "höchsten" Datum sortiert ausgeben werden soll
- UND-
  • die NULL-Werte aber "als Letztes" in der Sortierreihenfolge erscheinen sollen, dann wird es ein bisschen unappetitlich.

Ich versuch mal eine Skizze
01.
-- hier mal ein Access-SQL, falls kein MSSQL griffbereit 
02.
select  name, vorname, datum1, datum2, datum3 from  ( 
03.
SELECT name, vorname, datum1, datum2, datum3 
04.
                        ,  IIF( IsNull(datum1), date() + 1000 , datum1) as a 
05.
                        ,  IIF( IsNull(datum2), date() + 1000 , datum2) as b 
06.
                        ,  IIF( IsNull(datum3), date() + 1000 , datum3) as c 
07.
FROM Helmuthelmut2000 
08.
09.
order by IIf( a <= b and a<= c, a, IIF( b<=a and b<=c, b,c)) 
10.
;
Hier dasselbe als MSSQL
01.
select  name, vorname, datum1, datum2, datum3 from ( 
02.
SELECT name, vorname, datum1, datum2, datum3 
03.
                        ,  coalesce(datum1, dateadd(dd,1000,getdate()) ) as a 
04.
                        ,  coalesce(datum2, dateadd(dd,1000,getdate())) as b 
05.
                        ,  coalesce(datum3, dateadd(dd,1000,getdate())) as c 
06.
FROM Helmuthelmut2000 
07.
08.
order by CASE 
09.
        WHEN (a <= b and a<= c) THEN a 
10.
        WHEN ( b<=a and b<=c)  THEN b 
11.
        ELSE c 
12.
        END 
13.
;
Da ein Datumswert von NULL in deiner Sortirung ja als "der höchste" erscheinen soll, habe ich NULL übersetzt mit Heute plus 1000 Tage.
Wegen der Lesbarkeit habe ich Pseudospalten a, b, c eingefügt, wesentlich ist das ORDER BY IIF/CASE WHEN... in der letzten Zeile.

[Edit] Bei MSSQL-Variante auf Dateadd() und CASE WHEN...END geändert [/Edit]

Grüße
Biber
Bitte warten ..
Mitglied: Biber
31.12.2011 um 16:31 Uhr
Moin helmuthelmut2000,

es gibt so viele ungeklärte Fragen auf dieser Welt...

Werden die Zuschauer Guttenberg als Wetten-dass-Moderator akzeptieren?
Kann Angie die Hosenanzug-Industrie aus der Krise führen?
Werden dank Alfons Schubeck die Klopsbratereien mehr Umsatz oder einen Anstieg der VegatarierInnen bewirken?

Können wir dann wenigstens dein relativ übersichtliches Problemchen abhaken?

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
VB for Applications
In VBA ein (Order by )
gelöst Frage von chaos2goVB for Applications2 Kommentare

cheers Leute, ich hab folgendes anliegen : Hab ein Report als Excel Tabelle Spalten gehn von A - AM ...

Datenbanken
SQL ORDER BY und Join mit 2 Tabellen
gelöst Frage von DippsDatenbanken7 Kommentare

Hallo an alle, ich versuche gerade eine Join mit 2 Tabellen auf zubauen und mir den letzten Datensatz Anzeigen ...

Datenbanken
MySQL "order by" erst bestimmtes Wort, dann alphabetisch
gelöst Frage von AS-N00Datenbanken9 Kommentare

Hallo, ich möchte die Ausgabe eines Listings in einem Webshop so einstellen, dass er bei der Abfrage for der ...

Batch & Shell
Datei im mehrere Order verschieben
gelöst Frage von Mario76Batch & Shell11 Kommentare

Hallo zusammen, ich bin auf der Suche nach einem Batchbefehl, der eine Datei in einen/mehrere Ordner kopieren soll wenn ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 StundeInternet1 Kommentar

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 7 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 18 StundenWindows 103 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 20 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...