(dokładnie przetrzymuje banery które są wyświetlane w różnych częściach
strony - top,bottom,left,right).
I teraz mój problem polega na tym że potrzebuję w jednym zapytaniu dostać
po jednym banerze należącym do danej części strony (jeden baner dla części strony top,
jeden baner dla części strony bottom, jeden baner dla części strony left, jeden baner dla części strony right).
Czyli dokładnie potrzebuję dostać 4 banerki (różne) - losowe , tak aby się nie powtarzały.
Struktura tabeli wygląda tak:
baner_id path site ext start_time end_time active licznik width height link 1 ./media/baners/glosnik.swf 4 swf 1214943677 1216153277 1 0 18 18 NULL
'site' to właśnie położenie baneru na stronie: 1- top, 2-bottom, 3-left, 4-right.
Proste zapytanie które zwróci mi jeden rekord wygląda tak:
SELECT * FROM baners WHERE active = 1 ORDER BY RAND()
jednak zwraca on jeden tylko rekord z tabeli, a ja potrzebuje po jednym
rekordzie z każdej części strony (top, bottom, left , right)
W padłem na takie rozwiązanie:
SELECT * FROM baners WHERE active =1 AND start_time <= '1214943678' AND end_time >= '1214943678' GROUP BY site ORDER BY RAND( )
Jednak nie wiadomo czemu zawsze wyświetla te same rekordy więc coś ten
RAND() nie działa tu chyba poprawnie.
Próbowałem też z DISTINCT ale tez nie odniosło to żadnych efektów:
SELECT DISTINCT ( site ), `path` , `ext` , `width` , `height` , `link` FROM baners WHERE active =1 AND start_time <= '1214943678' AND end_time >= '1214943678' GROUP BY site ORDER BY RAND( )
Macie może jakiś pomysł jak to poprawnie zrobić - gdzie robie błąd?.
A może tego nie idzie zrobić (z jakiś tam względów).
Pozdrawiam,