Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 2472
Hei!

Holder på med et system der jeg i et scenario må hente ut tilfeldige rader fra en tabell med flere tusen rader. Dette er ikke noe problem i seg selv, men jeg ønsker også at radene som hentes ut skal være variert basert på en kolonne.

Ta utgangspunkt i at tabellen min ser slik ut:


Om jeg feks. ønsker å hente ut 3 tilfeldige rader fra denne tabellen, kan jeg risikere at alle 3 har gruppe "gresseter". Det jeg ønsker er å passe på at samtlige grupper blir representert i denne uthentingen, slik at jeg får 1 rad fra gresseter, 1 rad fra treeter, og 1 rad fra bananeter.

Om jeg henter ut fler enn 3 tilfeldige rader, ønsker jeg at hver gruppe skal bli representert ca. like mange ganger så langt det lar seg gjøre.

Er dette mulig i en spørring, eller må jeg dele dette opp, og kjøre flere?
Systemet utvikles i PHP og databasen bak er MySQL.
Noe ala dette du tenker på?

Kode

SELECT sub.gruppe, sub.navn, sub.matrett from <tabellnavn> 
LEFT JOIN (SELECT * FROM <tabellnavn> ORDER BY RAND()) sub ON (<tabellnavn>.gruppe = sub.gruppe) 
GROUP BY sub.gruppe 
ORDER BY <tabellnavn>.gruppe;
Edit: s1gh sin løsning ser bedre ut.
Sist endret av danielsk; 12. mars 2014 kl. 15:45.
curx's Avatar
Trådstarter Donor
Du er definitivt inne på noe der, men det ser ut som om den maksimalt henter ut 1 fra hver gruppe selv om jeg ikke har spesifisert en limit.

Pr. nå har jeg 42 forskjellige grupper, og med scriptet s1gh skrev får jeg kun ut maksimalt 42 rader selv om jeg setter limit til 200.
Spotify skrev litt om hvordan de løser akkurat dette problemet for et par uker siden. Les denne: http://labs.spotify.com/2014/02/28/h...shuffle-songs/
Sist endret av liasis; 13. mars 2014 kl. 09:52.