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

Mitglied: helmuthelmut2000

helmuthelmut2000 (Level 2) - Jetzt verbinden

11.12.2011 um 13:37 Uhr, 4856 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

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

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

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
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)8 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...