Oto poprawiony opis problemu:
Mam tabele:
gracze:
id_g, punkty
1, 10
2, 10
3, 10
schowki:
id_s, gracz, nazwa
1, 1, "góra"
2, 1, "dom"
3, 1, "grota"
4, 2, "plecak"
5, 2, "kieszeń"
6, 2, "jaskinia"
7, 3, "drzewo"
8, 3, "jama"
9, 3, "skrzynia"
Potrzebuję listę (przykład):
"gracz", "nazwa"
1, losowe z góra, dom lub grota
2, losowe z plecak, kieszeń lub jaskinia
3, losowe z drzewo, jama lub skrzynia
Chcem wylosować po jednym rekordzie "schowki.nazwa" dla każdego garcza "gracze.id_g" przy warunkach:
schowki.gracz=gracze.id_g AND gracze.punkty>0
Zrobiłem coś takiego:
SELECT `gracz`, `nazwa`
FROM `gracze`, `schowkia`
WHERE `schowki.gracz`=`gracze.id_g` AND `gracze.punkty`>0
GROUP BY `gracz`
ORDER BY RAND()
Pretestowałem też podpowiedź
indeo:
SELECT S.gracz, S.nazwa FROM gracze G inner join schowki S on G.id_g=S.gracz
where G.punkty>0
GROUP BY S.gracz
ORDER BY RAND()
ale jest problem, bo za każdym razem pokazuje tą samą listę:
"gracz", "nazwa"
1, góra
2, plecak
3, drzewo
czyli "schowki.nazwa" to pierwsza napotkana wartość dla każdego nowego "schowki.gracz".
Tu jest rozwiązanie mojego problemu.