Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Grupowanie wyników
Forum PHP.pl > Forum > Przedszkole
evolucja
Tabela:
id|userid|wartosc
1|1|testowo
2|51|testowo
3|61|testowo
4|51|testowo2
5|1|testowo2

i chciałbym otrzymać taką tablicę:
  1. $wyniki[1][1] = 'testowo';
  2. $wyniki[1][2] = 'testowo2';
  3. $wyniki[51][1] = 'testowo';
  4. $wyniki[51][2] = 'testowo2';
  5. $wyniki[61][1] = 'testowo';

Próbowałem takim zapytaniem:
  1. SELECT * FROM `tabela` GROUP BY userid

ale to zwraca jakiś dziwny wynik, tzn tylko po 1 wpisie dla każdego userid.
wookieb
A powiedz ty mi co ma wynikowa tablica w php do zapytania sql? Po prostu zrób sobie taką tablicę.
Foreach i jazda.
thek
A no co tu grupowanie? Toż to zwykły ORDER BY i zabawa po stronie PHP z wrzucaniem do tablicy.
evolucja
Jakieś zachamowanie w myśleniu chyba mam, bo nie umiem wymyślić jak foreachem miałbym to zrobić...
lukasz_matysek
Cytat(evolucja @ 23.04.2010, 15:31:28 ) *
  1. SELECT * FROM `tabela` GROUP BY userid

ale to zwraca jakiś dziwny wynik, tzn tylko po 1 wpisie dla każdego userid.

Nie zwraca ci dziwnego wyniku, tylko wynik zgodny z tym co chciałeś. Zleciłeś grupowanie takich samych userid - więc mysql je pogrupował i dał w wyniku.

Co do Twojego problemu - zrób tak:

$query = mysql_query("SELECT * FROM tabela ORDER BY userid");

Wtedy dostaniesz taki porządek wyniku, jaki chcesz mieć w tablicy.

Potem w pętli while($row = mysql_fetch_array($query)) wrzucaj sobie kolejne linijki do tablicy $wyniki[][].


PS "zahamowanie" jak coś ;p
evolucja
Ostatecznie, jeszcze przed twoją sugestią zrobiłem to w taki sposób:
  1. while($wyniki = mysql_fetch_array($query)) {
  2. $userid_a = $wyniki['userid'];
  3. foreach ($wyniki as $key => $value) {
  4. $wynik_pelny[$userid_a][$wyniki['id']][$key] = $value;
  5. }
  6. }
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.