| 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 |
|||
|
|
Svara med citat
|
|
|
#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) |
|||
|
|
Svara med citat
|
|
|
#3 | |||
|
||||
|
Mycket flitig postare
|
Citat:
"sponsorer" "namn" "title" "startdate" "enddate" ? Det ser rätt fult ut och dessutom kan orsaka fel. |
|||
|
|
Svara med citat
|
|
|
#4 | |||
|
||||
|
Flitig postare
|
Citat:
|
|||
|
|
Svara med 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. |
|||
|
|
Svara med citat
|
|
|
#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 |
|||
|
|
Svara med citat
|
|
|
#7 | |||
|
||||
|
Flitig postare
|
Japp... 4.0.25...
Tack obe för din prima fungerande lösning. tyvärr har jag inte uppdaterat till 4.1 då jag sist försökte stötte på rejält med patrull!
|
|||
|
|
Svara med citat
|
|
|
#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
|
||
|
|
Svara med citat
|
|
|
#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 med citat
|
| Svara |
|
|