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
GELÖST

MySQL Ausgabe sortieren nach Datum (n. älter 30 T.) danach sortieren nach Feld featured

Frage Entwicklung Datenbanken

Mitglied: TheMarcoS

TheMarcoS (Level 1) - Jetzt verbinden

17.01.2013 um 08:36 Uhr, 2137 Aufrufe, 5 Kommentare

Hallo zusammen

Ich habe für das Contao CMS eine BE-Extension für meine Projekte geschrieben. Man kann ein Projekt erfassen und gegebenenfalls ein Projekt mit einer Checkbox "featured" bevorzugen. (in der DB featured = 0 oder 1)

Im FE werden dann alle Projekte via SQL-Abfrage und PHP aufgelistet. Sortiert nach den bevorzugten Projekten (die sind wichtig und sollen dem Besucher sofort auffallen).

Nun möchte ich die Projekte aber auch noch nach Datum sortieren (ich habe ein Feld Erstellungsdatum). Die neusten (nicht älter als 30 Tage) sollen vor den bevorzugten Projekten aufgelistet werden.

Die Sortierungsreihenfolge sollte dann also so aussehen:
1. alle Projekte, die nicht älter als 30 Tage sind
2. alle Projekte, die featured = 1 haben
3. alle übrigen Projekte


Nur, wie sieht aber die SQL-Abfrage aus?

Ich hab's mit der Sortierung mal so versucht:
ORDER BY (DATEDIFF(NOW(), m.date) >= 30) DESC, m.featured DESC;

..leider erfolglos.


Wie sieht der ORDER BY - Befehl richtig aus?


Vielen Dank und Gruss
Marco
Mitglied: LianenSchwinger
17.01.2013 um 08:44 Uhr
Hallo Marco,

da wirst Du mit einer Sortierung nicht hinkommen sondern 2 Abfragen erstellen müssen, die Du mit "UNION ALL" hintereinander hängst.

1. Abfrage alle Projekte, die nicht älter als 30 Tage sind (Order by date desc)
UNION ALL
2. Abfrage alle Projekte, die älter als 30 Tage sind (Order by featured desc)


Gruß Jörg
Bitte warten ..
Mitglied: TheMarcoS
17.01.2013, aktualisiert um 09:38 Uhr
Hallo Jörg

Danke für deine schnelle Antwort. Ich habe es jetzt so versucht:

SELECT m.id, m.customer, m.date, m.prtsc, f.path
FROM tl_my_customers m
INNER JOIN tl_files f ON m.prtsc = f.id
WHERE m.date > unix_timestamp() - 2592000
ORDER BY m.date DESC
UNION ALL
SELECT m.id, m.customer, m.date, m.prtsc, f.path
FROM tl_my_customers m
INNER JOIN tl_files f ON m.prtsc = f.id
WHERE m.date < unix_timestamp() - 2592000
ORDER BY m.featured DESC


Jedoch erscheint folgende Fehlermeldung: "#1221 - Incorrect usage of UNION and ORDER BY"
Aber die Syntax ist so doch richtig, oder nicht? Die Abfragen einzeln funktionieren.

Danke und Gruss
Marco
Bitte warten ..
Mitglied: LianenSchwinger
17.01.2013 um 09:55 Uhr
Hallo Marco,

das liegt am ORDER BY vor dem UNION.
Versuch mal folgendes:

01.
SELECT * FROM ( 
02.
   SELECT m.id,  
03.
          m.customer,  
04.
          m.date,  
05.
          m.prtsc,  
06.
          f.path 
07.
   FROM tl_my_customers m 
08.
   INNER JOIN tl_files f ON m.prtsc = f.id 
09.
   WHERE m.date >= unix_timestamp() - 2592000 
10.
   ORDER BY m.date DESC) 
11.
 
12.
UNION ALL 
13.
 
14.
SELECT * FROM ( 
15.
   SELECT m.id,  
16.
          m.customer,  
17.
          m.date,  
18.
          m.prtsc,  
19.
          f.path 
20.
   FROM tl_my_customers m 
21.
   INNER JOIN tl_files f ON m.prtsc = f.id 
22.
   WHERE m.date < unix_timestamp() - 2592000 
23.
   ORDER BY m.featured DESC) 
24.
 
Ich habe auch noch im 1. Select ">=" gesetzt sonst fehlt Dir ein TAG.

Gruß Jörg
Bitte warten ..
Mitglied: TheMarcoS
17.01.2013 um 10:15 Uhr
Hallo Jörg

Genial! Vielen Dank!

Ich musste jeder Tabelle jedoch noch einen alias geben, damit es funktionierte ;)

SELECT * FROM ( 
   SELECT m.id,  
          m.customer,  
          m.date,  
          m.prtsc,  
          f.path 
   FROM tl_my_customers m 
   INNER JOIN tl_files f ON m.prtsc = f.id 
   WHERE m.date >= unix_timestamp() - 2592000 
   ORDER BY m.date DESC) AS A 
 
UNION ALL 
 
SELECT * FROM ( 
   SELECT m.id,  
          m.customer,  
          m.date,  
          m.prtsc,  
          f.path 
   FROM tl_my_customers m 
   INNER JOIN tl_files f ON m.prtsc = f.id 
   WHERE m.date < unix_timestamp() - 2592000 
   ORDER BY m.featured DESC) AS B



Gruss
Marco
Bitte warten ..
Mitglied: LianenSchwinger
17.01.2013 um 10:24 Uhr
Hallo Marco,

freut mich, das ich helfen konnte und das es klappt.
Jetzt bitte den Thread noch auf gelöst stellen.

Gruß Jörg
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MYSQL ausgabe
Frage von pcguyDatenbanken31 Kommentare

Hallo zusammen Ich versuche gerade einen DB inhalt gefiltert auszugeben. DB: id - parent_id - title - url - ...

Datenbanken
MySQL Suche Einträge älter als Datum XXX
gelöst Frage von ThoomaasDatenbanken12 Kommentare

Hallo alle zusammen, nach langem probieren und suchen bei Google bin ich leider nicht fündig geworden bzw. konnte es ...

Windows Server
Windows Updates nach Datum sortieren
Frage von RG2525Windows Server2 Kommentare

Hallo, Ich muss auf einem Windows Server 2008 R2 ca. 130 ausstehende Updates installieren. Alle Updates auf einmal zu ...

Batch & Shell
(Batch) Datum Sortier-Mechanismus
gelöst Frage von clragonBatch & Shell19 Kommentare

Hallo zusammen. Ich bin schon etwas länger am Batch schreiben, und war schon oft uneingeloggt hier, und jetzt hab ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser7 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...