Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Help! GROUP BY : wyswietla tylko pierwszy wpis ... Why?
Forum PHP.pl > Forum > Bazy danych > MySQL
babajaro
czemu wyswietla mi tylko wojewodztwo i jedno miasto z tego wojewodztwa a nie kilka...
w bazie jest wpisane:
id,wojewodztwo,miasto

teraz wyswietla mi:

1Wrocław
2Kraków
3Bielsko-Biała
4Bydgoszcz
6Szczecin
7Gdańsk
8Białystok
12Poznań
13Elbląg

a powinien:

1Wrocław
2Kraków, Zakopane
3Bielsko-Biała
4Bydgoszcz,Piła
6Szczecin
7Gdańsk,Gdynia,Sopot
8Białystok
12Poznań
13Elbląg

Pomóżcie!

[php:1:3116ea4efd]<?php
// wybor adresow wedlug warunku zapytania
$result4 = mysql_query("SELECT woj, miasto FROM paker WHERE karrimor = 'T' GROUP BY woj", $id_db_connect);




$menuOf = '&nbsp;';
$i = 0;
while ($query_data4 = mysql_fetch_row($result4))
{
$menuOf .= "<br><b>".$query_data4[0]."</b>".$query_data4[1];


$i++;
}
$menuOf .= '&nbsp;';

echo $menuOf;
?>[/php:1:3116ea4efd]
Majdan
Spróbuj tak:
[php:1:2cb50472ce]<?php
//(...)
$result4 = mysql_query("SELECT id, woj, miasto FROM paker WHERE karrimor = 'T' GROUP BY
woj", $id_db_connect);
//(...)
$menuOf .= "<br><b>".$query_data4[0]."</b>".$query_data4[1]." : ".$query_data4[2];
//(...)
?>[/php:1:2cb50472ce]
babajaro
wszystko po staremu... tylko że dołożyłeś chyba wyświetlenie id...

wygląda to tak:

51 : Wrocław
12 : Kraków
143 : Bielsko-Biała
164 : Bydgoszcz
96 : Szczecin
67 : Gdańsk
128 : Białystok
212 : Poznań
2313 : Elbląg

Masz jakis pomysł?
Majdan
Spróbuj przez mysql_fetch_array():
[php:1:94084cbb93]<?php
//(...)
$result4 = mysql_query("SELECT 'woj', 'miasto' FROM 'paker' WHERE 'karrimor' = 'T' GROUP BY 'woj'", $id_db_connect);
//(...)
while($query_data4 = mysql_fetch_array($result4)) {
$menuOf .= $query_data4["woj"] . " : " . $query_data4["miasto"];

}
//(...)
?>[/php:1:94084cbb93]
babajaro
I powstalo takie cos:

1 : Wrocław2 : Kraków3 : Bielsko-Biała4 : Bydgoszcz6 : Szczecin7 : Gdańsk8 : Białystok12 : Poznań13 : Elbląg

PS. a tak w ogole to probowalem DISTINCT czy jakos tak (na teraz nie pamietam dokladnej nazwy) ale niestety ta funkcja nie wyswietlila mi nic...
jakis pech czy co...

Jujz nie wiem co robic... sad.gif((
Majdan
[php:1:330dafad21]<?php
//(...)
$menuOf .= "<br><b>".$query_data4["woj"]."</b>".$query_data4["miasto"];
//(...)
?>[/php:1:330dafad21]
Jak tak nie wyświetla czego chcesz to najwidoczniej masz pustą komórkę "miasto".
FiDO
Jak chcesz wszystkie to nie mzoesz uzyc GROUP BY.
babajaro
wszystkie pola sa wypelnione...

a co musze uzyc jak nie GROUP by....?
Zbłąkany
ORDER by?? nie wiem czy taki cel chcesz osiagnac: wyswietlac wszystkie miasta z jakiegos wojewodztwa obok siebie smile.gif daj ORDER by woj powinno byc ok 8)
babajaro
ale ja chce wedllle wojewodztw...

nie wim o co chodzi... a gdzie to ORDER wstawic...

$result4 = mysql_query("SELECT woj, miasto FROM paker WHERE karrimor = 'T' GROUP BY woj >", $id_db_connect);
FiDO
Dajesz ORDER BY po wojewodztwie, dzieki temu dane w bazy przyjda w formacie:
Kod
woj1   miasto1

woj1   miasto2

woj1   miasto3

woj2   miasto4

woj2   miasto5

woj3   miasto6

...

Teraz z poziomu php sprawdzasz czy ostatni wiersz ma takie samo wojewodztwo jak aktualna, jesli nie to wyswietlasz nazwe wojewodztwa, a jesli tak to tylko sama nazwe miasta.
babajaro
a moglbym Cie prosic o taki kodzik? dla Ciebie to pewnie pryszczyk patrzac na ilosc ludzi, ktorym pomogles...

z gory wielkie dziekns!

Pozdrowka
BzikOS
Przeciez to tylko kwestia segregacji..

[php:1:07c3729de9]<?php
$dane = Array();

while( list( $woj, $miasto ) = @mysql_fetch_assoc( $result4 ) )
$dane[$woj][] = $miasto;
?>[/php:1:07c3729de9]

W wyniku otrzymujesz ładną tablicę, którą możesz przedstawić w jakiej tylko Ci się podoba formie.
babajaro
chyba spokoj sobie dam... sad.gif((

jednak jestem wielkie dno jesli chodzi o SQL... a teraz to i php mi sie juz zapomnialo...

piszecie kod kawalkami i juz nie wiem ktory jest dobry, ktory zly...

Dzieki za wszelka pomoc!
DreeD
Cytat
a moglbym Cie prosic o taki kodzik? dla Ciebie to pewnie pryszczyk patrzac na ilosc ludzi, ktorym pomogles...

z gory wielkie dziekns!

Pozdrowka


[php:1:5e0226a784]<?php
$result4 = mysql_query("SELECT woj, miasto FROM paker WHERE karrimor = 'T' ORDER BY
woj", $id_db_connect);
?>[/php:1:5e0226a784]

:?
FiDO
Cytat
a moglbym Cie prosic o taki kodzik? dla Ciebie to pewnie pryszczyk patrzac na ilosc ludzi, ktorym pomogles...

Ale to jeszcze nie znaczy, ze mam akurat czas.
BzikOS podal jeszcze lepsze (bardziej eleganckie i prostsze w wyswietlaniu) rozwiazanie, wiec proponuje z niego skorzytac.
Po kodzie, ktory podal bedziesz mial tablice tablic, gdzie pierwszym wymiarem jest wojewodztwo, a drugim miasta w nim:
Kod
Array(

  "mazowieckie" => Array("Warszawa", "inne", "wioski;)"),

  "wielkopolskie"=> Array("Poznan", "inne" ...)

)
babajaro
tak, tylko ze zmierzamy do tego, ze ja chce wyswietlic tylko miasta z wojewodztwami...

a oprocz tego chce wrzucic adresy i telefony, ktore mam w osobnych kolumnach tabeli...

tak sobie mysle, ze z tym moze byc problem...
FiDO
A ja sobie mysle, ze nie...
Po prostu zamiast wstawiac do tablicy nazwe miasta bedziesz wstawial kolejna tablice, w ktorej beda informacje o danym miescie.
pppspoonman
Znalazlem odpowiedni temat do mojego problemu.

Mam taka tabele konkurs:

id | nazwa | kategoria | glosy

Kategorii jest 25, wpisow ok. 3000. I teraz potrzebuje zapytanie do bazy o zwyciezcow w danej kategorii. Ale nie tylko jednego, co moge zrobic przez
[sql:1:7b9b50eff3]SELECT nazwa,kategoria,MAX(glosy) FROM konkurs GROUP BY kategoria ORDER BY kategoria[/sql:1:7b9b50eff3]

ale trzech pierwszych miejsc w danej kategorii. Jak to zrobic jednym zapytaniem SQL?
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.