FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Flitig postare
|
Jag vill välja ut fem slumpvis valda sponsorer, men dessa slumpade skall dessutom sorteras alfabetiskt, så att det blir rätt så att säga, hur gör man det? För sätter man "namn" efter rand() så händer ju inget, och före så blir det ingen skillnad!
Kod:
SELECT namn,url,title FROM sponsorer WHERE CURRENT_DATE BETWEEN startdate AND enddate ORDER BY RAND() LIMIT 5 |
|||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
Citat:
Kod:
SELECT namn, url, title FROM (SELECT namn,url,title FROM sponsorer WHERE CURRENT_DATE BETWEEN startdate AND enddate ORDER BY RAND() LIMIT 5) as temp ORDER BY namn (Har lite väl mycket alkohol i blodet så jag tar avstånd från ev. fel) |
|||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Mycket flitig postare
|
Citat:
"sponsorer" "namn" "title" "startdate" "enddate" ? Det ser rätt fult ut och dessutom kan orsaka fel. |
|||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Flitig postare
|
Citat:
|
|||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Mycket flitig postare
|
Citat:
Det som används är ett "derived table" och det är därför man måste ge det ett alias. |
|||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Medlem
|
Troligen har du som tidigare sagts MySQL < 4.1, som inte har stöd för subquerys.
Testa detta för att komma förbi detta om du har MySQL 4.0: Kod:
(SELECT namn,url,title FROM sponsorer WHERE CURRENT_DATE BETWEEN startdate AND enddate ORDER BY RAND() LIMIT 5) UNION (SELECT namn,url,title FROM sponsorer LIMIT 0) ORDER by namn |
|||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Flitig postare
|
Japp... 4.0.25...
![]() |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Nykomling
|
UNION är en hyfsat långsam lösning för något så enkelt som alfabetisk sortering.
Jag skulle satsat på att slänga in de fem slumpade raderna i en array (vektor om du nu föredrar), och sen sortera genom det språk du använder. I t.ex. PHP är detta mycket enkelt, och är säkerligen mycket snabbare än UNION ![]() |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Mycket flitig postare
|
Om du (inte helt obefogat) skall racka ner på union så kan du ju alltid använda "UNION ALL" som är snabbare än UNION och fungerar utmärkt i just det här exemplet...
|
||
![]() |
![]() |
Svara |
Ämnesverktyg | |
Visningsalternativ | |
|
|