2 database entries naar keuze bovenaan in lijst

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dave L

Dave L

06/07/2012 13:24:14
Quote Anchor link
Ik heb een tabel met artiesten. Iedere artiest heeft een "pos" waarde (positie)

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
Gewijzigd op 06/07/2012 13:46:07 door Dave L
 
PHP hulp

PHP hulp

20/05/2024 16:08:33
 
Frank WD

Frank WD

06/07/2012 14:04:51
Quote Anchor link
Kan je niet gewoon ORDER BY positie ASC of DESC doen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT
    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
 
Kris Peeters

Kris Peeters

06/07/2012 14:07:22
Quote Anchor link
Probeer eens met zo'n soort constructie (ik verzin een aantal velden)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SELECT id, username, (pos=1 OR pos=2) AS foo FROM artiesten
ORDER BY foo, datum
Gewijzigd op 06/07/2012 14:11:06 door Kris Peeters
 
Dave L

Dave L

06/07/2012 14:07:22
Quote Anchor link
Nee, want de rest gaat op invoerdatum. Eerste 2 zijn zeg maar: "uitgelicht".

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
Gewijzigd op 06/07/2012 15:17:02 door Dave L
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.