Bovenste 10 selecteren en deze random weergeven?
Nu kan ik de volgende query gebruiken:
SELECT * from Content WHERE Soortbericht = 2 ORDER BY RAND() LIMIT 10
Nu haal ik dus willekeurig (random) 10 records op. Maar ik wil graag alleen de laatst ingevoerde. Kan ik bijvoorbeeld ook 2 order opdrachten meegeven zodat ik ook nog op id (autonummering) kan sorteren?
Veronderstellend dat id auto_increment is..
select *
from Content
order by id desc
limit 10
Dan de resultaten fetchen, in een array stoppen, en die met shuffle door elkaar gooien.
edit dit heb in net gedaan in phpmyadmin en werkt:
SELECT *
FROM (
SELECT *
FROM `cds`
) AS CDS
LIMIT 0 , 30
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Dan krijg je waarschijnlijk een foutmelding als: subquery returns more than 1 result
Geeft: Toon Records 0 - 2 (3 totaal, Query duurde 0.0265 sec)
Klaasjan Boven schreef op 11.03.2007 11:13:
dit heb in net gedaan in phpmyadmin en werkt:
SELECT *
FROM (
SELECT *
FROM `cds`
) AS CDS
LIMIT 0 , 30
SELECT *
FROM (
SELECT *
FROM `cds`
) AS CDS
LIMIT 0 , 30
Daar zit geen RAND in?
nog even de juiste syntax:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sql="SELECT * // normaal natuurlijk de velden
FROM ( // nu komt de squbquery
SELECT * FROM jouwtabel LIMIT 10)
AS HOOGSTE_TIEN // zonder alias werkt het niet. Ik denk dat mysql het //resulaat als view behandeld
ORDER BY RAND()";
?>
$sql="SELECT * // normaal natuurlijk de velden
FROM ( // nu komt de squbquery
SELECT * FROM jouwtabel LIMIT 10)
AS HOOGSTE_TIEN // zonder alias werkt het niet. Ik denk dat mysql het //resulaat als view behandeld
ORDER BY RAND()";
?>
Let niet op de kleurtjes
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Jan Koehoorn schreef op 11.03.2007 11:03:
@ Rafael: die heb ik net ff lokaal getest, maar die geeft nog steeds de laatste tien id's in aflopende volgorde.
Raar, ik dacht dat hij het hier net goed deed, maar na opnieuw te testen blijkbaar niet. Ik zal misgekeken hebben :-)
Euh, dit bovenstaande geeft een foutmelding
Wat is de foutmelding als ik vragen mag?
Verder is het een goed idee om queries netjes uit te schrijven over meerdere regels, netjes inspringen, etc.
100x beter leesbaar en te debuggen.
Ik ben nog steeds benieuwd naar de foutmelding. Geef dan ook even de mysql versie
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
32 20-11-05 14:00:00
25 02-11-05 20:15:00
23 30-10-05 09:30:00
29 13-11-05 09:30:00
27 01-11-05 09:00:00
28 06-11-05 14:00:00
24 30-10-05 14:00:00
26 06-11-05 09:00:00
31 20-11-05 09:00:00
30 13-11-05 14:00:00
25 02-11-05 20:15:00
23 30-10-05 09:30:00
29 13-11-05 09:30:00
27 01-11-05 09:00:00
28 06-11-05 14:00:00
24 30-10-05 14:00:00
26 06-11-05 09:00:00
31 20-11-05 09:00:00
30 13-11-05 14:00:00
krijg ik bij
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT *
FROM (
SELECT *
FROM `Kerktijden`
ORDER BY ID ASC
LIMIT 0 , 10
) AS HOOGSTE10
ORDER BY RAND( )
LIMIT 0 , 10
FROM (
SELECT *
FROM `Kerktijden`
ORDER BY ID ASC
LIMIT 0 , 10
) AS HOOGSTE10
ORDER BY RAND( )
LIMIT 0 , 10
Opgemerkt dat mijn tabel bi 30 begint
Het is gelukt, hartelijk dank iedereen voor de tips.