Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Grupowanie wyników
evolucja
post
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A powiedz ty mi co ma wynikowa tablica w php do zapytania sql? Po prostu zrób sobie taką tablicę.
Foreach i jazda.
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A no co tu grupowanie? Toż to zwykły ORDER BY i zabawa po stronie PHP z wrzucaniem do tablicy.
Go to the top of the page
+Quote Post
evolucja
post
Post #4





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Jakieś zachamowanie w myśleniu chyba mam, bo nie umiem wymyślić jak foreachem miałbym to zrobić...
Go to the top of the page
+Quote Post
lukasz_matysek
post
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 2
Dołączył: 25.03.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
evolucja
post
Post #6





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 15:06