Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak to zrobić w jednym zapytaniu?
Forum PHP.pl > Forum > Bazy danych > MySQL
kitol
Mamy tabelę (id, grupa)

0 , 0
1 , 0
2 , 0
3 , 1
4 , 2
5 , 3
6 , 3

Jak wylosować w jednym zapytaniu po jednym id z każdej grupy? Tzn. chcę mieć jedno zapytanie które zwróci w przypadku tej tabeli 4 liczby: pierwsza z przedziału (0-2), druga =3, trzecia=4, czwarta (5 lub 6).
Zrobiłem to w pętli, ale w takim przypadku mam aż 5 zapytań.
ferr
  1. "SELECT id, id_grupa FROM tabela GROUP BY id_grupa"


?
kitol
Tak to działa snitch.gif, ale nie oto mi chodziło. Nie sprecyzowałem, że pojedyńcza wartość ma być losowana z grupy kilku elementowej. To zapytanie zwraca zawsze taki sam zestaw. sad.gif
ferr
  1. SELECT id, id_grupa FROM tabela GROUP BY id_grupa ORDER BY RAND()
kitol
też nie do końca dobrze bo jak zechcę posortować po grupa to mi nie działa.

Wykombinowałem coś takiego:

  1. SELECT * FROM ( SELECT id,id_grupa
  2. FROM tabela ORDER BY RAND()
  3. ) AS a GROUP BY id_grupa ORDER BY id_grupa DESC;
ferr
Wydaje mi sie, ze cos takiego pozwoli posortowac po grupie:

  1. SELECT id, id_grupa FROM tabela GROUP BY id_grupa ORDER BY RAND(), id_grupa
kitol
niestety nie działa: zwraca zawsze ten sam zestaw id, grupa w losowej kolejności.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.