Ik wil een lijst artikels laten rangschikken op datum aanmaak product.
" Select * from articles order by articledate "
Maar ik wil ook dat er een mogelijk is dat ik ze eerst via een extra veld laat sorteren. Namelijk eerst sorteren op het veld "payed".
Als in het veld payed staat of 1. Dan wil ik dat deze eerst op het scherm komen en dan pas alle artikels volgens datum. Kan dat? Of is dat iets dat in php moet geschreven worden? Zoja hoe moet dat precies?
Je kunt oplopend (ASCending) of aflopend (DESCending) sorteren op meerdere attributen.
De volgorde van de attributen bepaalt waar er eerst op gesorteerd wordt.
Als je eerst wilt sorteren op "payed", met de betaalde artikelen bovenaan, dan sorteer je aflopend op "payed". Als je vervolgens aflopend wilt sorteren op "articledate", dan komt dit hier achteraan.
Zoiets dus:
SELECT *
FROM articles
ORDER BY payed DESC, articledate DESC
Let er dan wel op dat je datums dan mogelijk niet meer op aflopende volgorde staan omdat er eerst op "payed" wordt gesorteerd.
Je kunt prima sorteren op meerdere kolommen met SQL
SELECT
id, omschrijving, datum, bedrag, payed
FROM
articles
ORDER BY
payed ASC, datum DESC
Ik hoop echter niet dat je en het woord payed en het cijfer 1 door elkaar gebruikt want dat is niet netjes en geeft dan inderdaad problemen bij het sorteren.
Verder slechts ter informatie:
Ik zou een aparte tabel 'transactions' (of 'payments') gebruiken.
Ook articles zou eigenlijk een andere tabel moeten zijn. Iets als 'Sales' of zo.
articles => Welke artikelen verkopen we?
Sales => Wat hebben we verkocht
Payments => Wie heeft welk bedrag betaald? (kan ook gebruikt worden voor 'Niet goed geld terug')
Wordt met "Payed" bedoeld dat iets betaald is? Dan is het wel verstandig om daarvoor iets als "Paid" te gebruiken. Dat voorkomt dat als iemand later met de code aan de gang gaat, problemen krijgt omdat hij wel voor de correcte spelling gaat.