Witam

Użyłem znaleziony gdzieś skrypt do losowania jednego rekordu z tabeli:

  1. SELECT * FROM ciekawart
  2. JOIN (SELECT FLOOR(idd*rand()) AS rand_id FROM (SELECT MAX(id) AS idd FROM ciekawart) AS tmp2 ) AS tmp
  3. ON ciekawart.id = tmp.rand_id LIMIT 1


W tabeli 'ciekawart' mam ciekawostki, z których losowana jest jedna. Jak widać najpierw pobierane jest maksymalne id tabeli, potem jest ono mnożone przez losowo wygenerowaną liczbę (za pomocą rand()) tak, by wybrać losowe id ciekawostki. Generalnie wszystko działa - losuje się jedna ciekawostka, a skrypt jest dosyć optymalny. Jednak dochodzą tu jeszcze warunki ograniczające zakres losowania. Pokażę to tak: tabela ciekawart ma m.in. takie kolumny:
id | zespol | ciekawostki

Ciekawostki są o zespołach, więc kolumna 'zespol' przechowuje id zespołu. Dzięki temu mogę się odwoływać do tabeli z nazwami zespołów, przedstawionej poniżej.

Budowa tabeli 'nazwyzespolow':
id | nazwazespolu | rock | punk | ....

kolumna 'id' w tej tabeli odpowiada kolumnie 'zespol' w tabeli 'ciekawart'. Kolumny 'rock', 'punk' itd określają czy konkretnemu zespołowi przypisane są te gatunki (tzn np dla zespołu Black Sabbath rock=1, punk=0, pop=0 itd).
Muszę więc zrobić tak, by przy losowaniu ciekawostki, po wybraniu odpowiedniego gatunku na stronie, ciekawostki losowały się tylko z tego konkretnego gatunku, bo obecny skrypt losuje wszystkie dostępne. Czyli skrypt ma wybrać tylko te ciekawostki z tabeli 'ciekawart', gdzie np nazwyzespolow.rock = '1'.
Innymi słowy, gdyby pominąć losowanie, zapytanie wyglądałoby tak:
  1. SELECT ciekawart*, nazwyzespolow.* FROM ciekawart, nazwyzespolow WHERE nazwyzespolow.id = ciekawart.zespol AND nazwyzespolow.rock = "1"
W taki sam sposób muszę to zrobić dla tego skryptu losującego - kombinuję już od dwóch dni i cały czas zapytanie jest błędne... ma ktoś jakieś pomysły?

pozdrawiam
flaa