2 database entries naar keuze bovenaan in lijst
Dus met 10 artiesten zijn er dus ook 10 posities.
Nu kan het dus zijn dat artiest 8, positie 1 heeft en artiest 4 positie 2.
Hoe krijg ik het met 1 query voor elkaar dat eerst de artiesten weergegeven worden (in een while loop) die pos=1 en pos=2 hebben, en daarna pas de rest ?
Ik gebruik nu hier 2 queries voor, maar weet zeker dat dit met 1 kan. Echter kom ik er dus niet uit.
Edit:
De queries zijn nu dus (in jip en janneke snel-formaat):
1. SELECT FROM artiesten WHERE pos < 3
2. SELECT FROM artiesten WHERE pos > 2
Toevoeging op 06/07/2012 13:43:57:
Volgens mij moet ik ORDER BY CASE gebruiken... am i right ?
SELECT FROM artiesten ORDER BY CASE WHEN pos < 3 THEN pos ELSE 3 END, pos ASC
De queries zijn nu dus (in jip en janneke snel-formaat):
1. SELECT FROM artiesten WHERE pos < 3
2. SELECT FROM artiesten WHERE pos > 2
Toevoeging op 06/07/2012 13:43:57:
Volgens mij moet ik ORDER BY CASE gebruiken... am i right ?
SELECT FROM artiesten ORDER BY CASE WHEN pos < 3 THEN pos ELSE 3 END, pos ASC
Gewijzigd op 06/07/2012 13:46:07 door Dave L
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
SELECT
artiest,
titel,
positie,
FROM
artiesten
ORDER BY
positie
DESC // Of ASC gebruiken
artiest,
titel,
positie,
FROM
artiesten
ORDER BY
positie
DESC // Of ASC gebruiken
Uitkomst:
positie 1. Artiest - titel
positie 2. Artiest - titel
positie 3. Artiest - titel
positie 4. Artiest - titel
ENZ........
Gewijzigd op 06/07/2012 14:08:22 door Frank WD
Hier even de query zoals hij is/was voor toevoeging van het weergeven van de 2 entries met pos=1 & pos=2:
SELECT id,naam,genre,label,content,date_online FROM artiesten WHERE date_online < NOW() AND booking=1 AND aktief=1 ORDER BY date_online ASC
Edit:
De uiteindelijke JUISTE query. Haalt eerst entries met pos=1 èn pos=2 uit de database, daarna de overige entries. Die zijn weer op hun beurt gesorteerd op datum.
SELECT id,naam,genre,label,content,date_online,pos FROM artiesten WHERE date_online < NOW() AND distributie=1 AND aktief=1 ORDER BY CASE WHEN pos < 3 THEN pos ELSE 3 END, date_online DESC
De uiteindelijke JUISTE query. Haalt eerst entries met pos=1 èn pos=2 uit de database, daarna de overige entries. Die zijn weer op hun beurt gesorteerd op datum.
SELECT id,naam,genre,label,content,date_online,pos FROM artiesten WHERE date_online < NOW() AND distributie=1 AND aktief=1 ORDER BY CASE WHEN pos < 3 THEN pos ELSE 3 END, date_online DESC
Gewijzigd op 06/07/2012 15:17:02 door Dave L