ORDER BY op twee velden aflopen en oplopend sorteren
Ik heb deze query:
En deze sorteert eerst op concept-berichten, en daarna op de date_posted en dan aflopend.
Echter staan dan de conceptberichten met een 1 onderaan in de sortering. Kan ik die ook weer bovenaan tonen?
Ik zou het wel kunnen realiseren door het omgedraaide te doen, en deze een 0 mee te geven als het een concept is. Maar dat vind ik ook weer niet erg logisch. Dus is dat eenvoudig te bewerkstellingen wat ik wil?
Edit: Hmmmmm. Je kan dus toch wel per veld ASC of DESC doen. :-)
Solved anyway :-P
Code (php)
1
2
3
4
5
6
2
3
4
5
6
SELECT
id, title, author, concept, DATE_FORMAT(date_posted, '%e %b %Y om: %H:%i') AS dateformatted
FROM
articles WHERE deleted=0
ORDER BY
concept, date_posted DESC
id, title, author, concept, DATE_FORMAT(date_posted, '%e %b %Y om: %H:%i') AS dateformatted
FROM
articles WHERE deleted=0
ORDER BY
concept, date_posted DESC
En deze sorteert eerst op concept-berichten, en daarna op de date_posted en dan aflopend.
Echter staan dan de conceptberichten met een 1 onderaan in de sortering. Kan ik die ook weer bovenaan tonen?
Ik zou het wel kunnen realiseren door het omgedraaide te doen, en deze een 0 mee te geven als het een concept is. Maar dat vind ik ook weer niet erg logisch. Dus is dat eenvoudig te bewerkstellingen wat ik wil?
Edit: Hmmmmm. Je kan dus toch wel per veld ASC of DESC doen. :-)
Solved anyway :-P
Gewijzigd op 19/02/2020 21:02:59 door - Ariën -
PHP hulp
15/11/2024 08:05:20Ivo P
20/02/2020 09:57:53om het antwoord er ook bij te zetten, omdat je dit toch best wel eens langs ziet komen:
ORDER BY gaat standaard ASCending, oplopend.
"ORDER BY naam" gaat dus zodanig dat Alfred voor Bert komt te staan.
dus feitelijk wordt gelezen door SQL "ORDER BY naam ASC"
Sorteer je op 2 kolommen:
"ORDER BY naam, leeftijd" dan wordt dat "ORDER BY naam ASC, leeftijd ASC"
En zoals je dus uitgevonden hebt: de ASC of DESC geldt per sorteer-criterium.
Dus per kolom zul je ASC of DESC moeten noemen. En als je dat niet doet, wordt voor die kolom ASC aangenomen.
"ORDER BY naam, leeftijd DESC" is dus "ORDER BY naam ASC, leeftijd DESC"
En jij moest dus 2x DESC bij het sorteren zetten.
ORDER BY gaat standaard ASCending, oplopend.
"ORDER BY naam" gaat dus zodanig dat Alfred voor Bert komt te staan.
dus feitelijk wordt gelezen door SQL "ORDER BY naam ASC"
Sorteer je op 2 kolommen:
"ORDER BY naam, leeftijd" dan wordt dat "ORDER BY naam ASC, leeftijd ASC"
En zoals je dus uitgevonden hebt: de ASC of DESC geldt per sorteer-criterium.
Dus per kolom zul je ASC of DESC moeten noemen. En als je dat niet doet, wordt voor die kolom ASC aangenomen.
"ORDER BY naam, leeftijd DESC" is dus "ORDER BY naam ASC, leeftijd DESC"
En jij moest dus 2x DESC bij het sorteren zetten.
Klopt, i know.
Maar ik wist niet dat je de sortering op twee velden kon instellen, dat had ik nooit eerder geprobeerd, en bij de eerste keer ging het door een PEBCAK probleem fout..
Het werkt prima zoals ik wil :-)
Maar ik wist niet dat je de sortering op twee velden kon instellen, dat had ik nooit eerder geprobeerd, en bij de eerste keer ging het door een PEBCAK probleem fout..
Het werkt prima zoals ik wil :-)