Avatar billede Slettet bruger
28. august 2008 - 08:56 Der er 6 kommentarer og
1 løsning

Random udtræk

Hej
Jeg har en tabel fuld af billeder i inddelt 2 kategorier, en kategori X (betalende kunder) og en kategori Y (ikke-betalende kunder). Jeg kan udskifte disse billeder og ændre deres kategori-inddeling fra min administration, så der vil ofte være et forskelligt antal billeder i kategorierne X og Y.
Jeg vil gerne hive 6 tilfældige billeder ud af denne tabel og vise dem ét af gangen (nyt billede ved reload af siden) MEN der skal først og fremmest vises billeder fra kategorien X, da kunderne her jo betaler for at blive vist (i rotation). Hvis der så ikke er nok billeder i kategori X, skal der suppleres med billeder fra kategorien Y indtil 6 billeder er hentet i alt. Disse 6 billeder skal så vises i en random rotation på siden.
Jeg kører PHP/Mysql.
Hvordan gør man det og kan man overhovedet gøre det?
Avatar billede pidgeot Nybegynder
28. august 2008 - 09:33 #1
Noget a la det her skulle kunne gøre det (utestet og skrevet frit fra hukommelsen):

SELECT * FROM
(SELECT * FROM tabel WHERE kategori = X ORDER BY RAND() LIMIT 6
  UNION
  SELECT * FROM tabel WHERE kategori = Y ORDER BY RAND() LIMIT 6) a LIMIT 6

Alternativt kan du lave det med to queries og en mysql_num_rows/COUNT(*)/etc., så du dermed kan vurdere hvor mange Y'ere du skal have.
Avatar billede arne_v Ekspert
31. august 2008 - 23:54 #2
Af forskellige grunde tror, jeg at jeg ville foretrække:

SELECT *,IF(kategori = X,1,0) AS prio
FROM tabel
ORDER BY prio DESC, RAND()
LIMIT 6
Avatar billede arne_v Ekspert
31. august 2008 - 23:59 #3
Og det var så vist århundredets ringeste komma sætning ...
Avatar billede Slettet bruger
01. september 2008 - 16:53 #4
Tak til jer begge for gode forslag. Jeg fik det til at virke ud fra Pidgeot's forslag, så det må være ham, der skal have point. Smid et svar og få point.
Avatar billede pidgeot Nybegynder
01. september 2008 - 17:13 #5
Værsgo :)

(Personligt kan jeg faktisk bedre lide Arne's løsning - den er pænere - men det er så en sidebemærkning)
Avatar billede Slettet bruger
01. september 2008 - 21:34 #6
et svar...?
Avatar billede pidgeot Nybegynder
01. september 2008 - 22:15 #7
Whoops - min fejl :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester