[SQL] Random sorteren, maar een gedeelte niet.

Pagina: 1
Acties:

  • Bartholomew
  • Registratie: Januari 2000
  • Laatst online: 12-04 12:56
Ik wil graag een verzameling links op willekeurige volgorde op mn pagina zetten maar de links die nieuw zijn bovenaan hebben.

Nu los ik het op met 2 querys (voor de leesbaarheid even heftig vereenvoudigd):
Eerst:

PHP:
1
2
3
SELECT * 
FROM `links` 
WHERE `nieuw` = '1';


en dan:
PHP:
1
2
3
4
SELECT * 
FROM `links` 
WHERE `nieuw` = '0'
ORDER BY RAND();


Weet iemand een truck om dit met 1 query te doen? Deze pagina wordt vaak bezocht dus ik wil graag dat ie zo snel mogelijk is.

Verwijderd

SELECT * FROM links ORDER BY nieuw, RAND()

Verwijderd

Je kunt inderdaad sorteren op meerdere columns en de zoekmethode tevens per column definieren (ASC, DESC):

PHP:
1
2
3
4
5
6
7
8
9
10
$query =
    "
    SELECT
        *
    FROM
        links
    ORDER BY
        nieuw DESC,
        rand()
    ";


Overigens heb ik zelf ook heel lang * gebruikt in mn query's maar aangezien ik steeds meer bezig ben met complexere websites en een hoop problemen ben tegengekomen met * raad ik je dit echt af; probeer gewoon alle veldnamen op te schrijven.
Dat was de tip-van-flip...

  • Bartholomew
  • Registratie: Januari 2000
  • Laatst online: 12-04 12:56
aah k wist niet dat het mogelijk was meerdere kolommen op te geven in de ORDER BY ... THAAAAANX!

over dat *etje ... zoasl gezegd heb ik de query hier vereenvoudigd voor de leesbaarheid ... er zit nog veel meer shit in die query om alleen links op te halen waarvan de status online is en binnen een beaalde online_van en online_tot datum vallen enzo

bedankt gastuh!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Just curious: waarom een ORDER BY rand()? Als je niet geinteresseerd bent in de volgorde waarin de items terugkomen kan je deze toch net zo goed weglaten en alleen sorteren op 'nieuw'.

Today's subliminal thought is:


  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Dan is de volgorde altijd dezelfde, en mss wil hij dat niet (linkpartner: 'JIJ BEVOOROORDEELT <anderelinkpartner>')

If you can't beat them, try harder


Verwijderd

Annie schreef op 17 October 2003 @ 12:24:
Just curious: waarom een ORDER BY rand()? Als je niet geinteresseerd bent in de volgorde waarin de items terugkomen kan je deze toch net zo goed weglaten en alleen sorteren op 'nieuw'.
Weet het niet heel zeker, maar als je dat niet meegeeft gaat hij het niet random uit de DB halen hoor, maar met een zekere regelmaat die hij zelf bepaald (zal vast wel ergens op mysql.com staan). Ik denk dat hij de rows dan weergeeft aan de hand van hun volgorde van toevoegen oid (in geval van een index).

Overigens TS: wel je rand() eerst voorzien van een goede 'seed'.

  • Bartholomew
  • Registratie: Januari 2000
  • Laatst online: 12-04 12:56
dingstje schreef op 17 October 2003 @ 12:26:
Dan is de volgorde altijd dezelfde, en mss wil hij dat niet (linkpartner: 'JIJ BEVOOROORDEELT <anderelinkpartner>')
precies ;-)

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Verwijderd schreef op 17 oktober 2003 @ 12:26:
Weet het niet heel zeker, maar als je dat niet meegeeft gaat hij het niet random uit de DB halen hoor, maar met een zekere regelmaat die hij zelf bepaald
offtopic:
Ja dat begrijp ik :)
Maar ik zie het nut niet zo van linkjes in random volgorde plaatsen.

Today's subliminal thought is:


Verwijderd

Annie schreef op 17 October 2003 @ 16:59:
offtopic:
Ja dat begrijp ik :)
Maar ik zie het nut niet zo van linkjes in random volgorde plaatsen.
offtopic:
Tja, als de TS dat wil dan is het nuttig... :)

[ Voor 4% gewijzigd door Verwijderd op 17-10-2003 18:58 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Annie schreef op 17 October 2003 @ 16:59:
[...]

offtopic:
Ja dat begrijp ik :)
Maar ik zie het nut niet zo van linkjes in random volgorde plaatsen.
Ik zou ze zelf liever op alfabet zetten oid idd, magoed, mysql heeft de neiging alles te sorteren, als je geen sortering opgeeft pakt ie de primary key (tenzij je een andere als default hebt opgegeven) etc..

't Lijkt er wel op dat mysql dat niet ongesorteerd _kan_ weergeven :X
Pagina: 1