Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> grupowanie oraz wyswietlanie wynikow, [PHP][MySQL]
majesgrudziadz
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Witam nie mogę sobie poradzić z grupowaniem i wyświetlaniem wyników z bazy mysql...

1 tabela

id | level | localized_name
1 | 1 | nazwa 1
1 | 1 | nazwa 2
1 | 1 | nazwa 3
1 | 2 | nazwa 4
4 | 1 | nazwa 1
5 | 1 | nazwa 3
6 | 2 | nazwa 4
5 | 2 | nazwa 5
5 | 3 | nazwa 6
5 | 4 | nazwa 7


2 tabla

id | nick
1 | nick 1
4 | nick 2
5 | nick 3
6 | nick 4


a wyświetlać bym chciał tak:



LEVEL 1
nazwa 1 (nick1, nick2)
nazwa 2 (nick1)
nazwa 3 (nick1, nick3)

LEVEL 2
nazwa 4 (nick1, nick4)
nazwa 5 (nick3)

LEVEL 3
nazwa 6 (nick3)

LEVEL 4
nazwa 7 (nick3)



czy może mi ktoś pomóc ułożyć zapytanie MySQL i ewentualnie z kodem PHP ? mecze się od 1h :/



UP

nikt nie wie jak to pogrupowac ?
Go to the top of the page
+Quote Post
Greg0
post
Post #2





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


Powinieneś przeprojektować bazę i zastosować relację wiele do wielu.
Go to the top of the page
+Quote Post
Sephirus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


  1. SELECT t1.level, t1.nazwa, GROUP_CONCAT(t2.nick ORDER BY t2.nick SEPARATOR ', ') AS nicki FROM tabela_1 AS t1
  2. JOIN tabela_2 AS t2 ON t1.id = t2.id
  3. GROUP BY t1.localized_name
  4. ORDER BY t1.level ASC


To Ci powinno zwrócić coś takiego:

Kod
level | nazwa | nicki

1 | Nazwa 1 | nick1, nick2
1 | Nazwa 2 | nick1
1 | Nazwa 3 | nick1, nick3
2 | Nazwa 4 | nick1, nick4
... itd ...


A to w PHP już można ładnie pokazać
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #4





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


hmm ok nie rozumie tylko jak to pokazac (IMG:style_emoticons/default/smile.gif)


bo chce uzyskac cos takiego

LEVEL 1
nazwa 1 (nick1, nick2)
nazwa 2 (nick1)
nazwa 3 (nick1, nick3)

LEVEL 2
nazwa 4 (nick1, nick4)
nazwa 5 (nick3)

LEVEL 3
nazwa 6 (nick3)

LEVEL 4
nazwa 7 (nick3)

Ten post edytował majesgrudziadz 6.02.2013, 16:41:12
Go to the top of the page
+Quote Post
Sephirus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


  1. $query = mysql_query("... ten sql powyżej ...");
  2.  
  3. $lastLevel = 0;
  4. while($r = mysql_fetch_assoc($query)) {
  5. if($lastLevel != $r['level']) {
  6. echo 'LEVEL '.$r['level'].'<br/>';
  7. $lastLevel = $r['level'];
  8. }
  9.  
  10. echo $r['nazwa'] .' ('.$r['nicki'].')<br/>';
  11. }


Takie trudne? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #6





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Takie oczywiste i nie trudne ... ale dzis jakos wszystko mi z trudem przychodzi (IMG:style_emoticons/default/sad.gif)
dzieki za pomoc .... teraz juz poskladam to tak jak mi potrzeba (IMG:style_emoticons/default/smile.gif)

pozdrawiam

Mam jeszcze jeden problem ...

GROUP_CONCAT(t2.nick ORDER BY t2.nick SEPARATOR ', ') laczy nicki dodaje przecinek natomiast ma ograniczona ilosc znakow ... nie pokazuje wszystkich nickow ... jak temu zaradzic ... max nickow moze byc 100



i kolejny problem nie wiem jak i gdzie dodac do tego zapytania aby liczylo mi ilosc nickow na danym levelu w danej nazwie


  1. SELECT t1.level, t1.localized_name, GROUP_CONCAT(t2.nick ORDER BY t2.nick SEPARATOR ', ') AS nicki FROM czolg_list AS t1
  2. JOIN gracz_list AS t2 ON t1.id = t2.id
  3. GROUP BY t1.localized_name
  4. ORDER BY t1.level DESC
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: 24.08.2025 - 13:42