Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]jak pobrać dane w zapytaniu
robos85
post
Post #1





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


Mam 2 tabele: państwa i miasta.

Chciałbym w 1 zapytaniu pobrać listę miast, w których dodane są miasta i nie wiem jak je ułożyć.

panstwa(id,nazwa)
miasta(id,nazwa,id_panstwa)

Z góry dzięki za pomoc

Ten post edytował robos85 21.01.2009, 16:10:26
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




Kompletnie nie rozumiem problemu.. Opisz to szerzej.

Ten post edytował wookieb 21.01.2009, 16:14:31
Go to the top of the page
+Quote Post
robos85
post
Post #3





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


np:

Mam w bazie 10 państw. Ale tylko do 5 z nich dopisane są miasta w tabeli 'miasta'.
Czyli 5 państw "nie ma miast" w tabeli.

Ja chciałbym pobrać listę tylko tych miast, dla których w tabeli 'miasta' są dodane jakieś wpisy
Go to the top of the page
+Quote Post
Wykrywacz
post
Post #4





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


  1. SELECT panstwa FROM panstwa LEFT JOIN miasta ON panstwa.id = miasta.panstwa_id

Cytat
Ja chciałbym pobrać listę tylko tych miast, dla których w tabeli 'miasta' są dodane jakieś wpisy


chyba "Ja chciałbym pobrać listę tylko tych państw, dla których w tabeli 'miasta' są dodane jakieś wpisy "

Ten post edytował Wykrywacz 21.01.2009, 16:16:44
Go to the top of the page
+Quote Post
wookieb
post
Post #5





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




  1. SELECT * FROM miasta WHERE id_panstwa IS NOT NULL OR id_panstwa>0
Go to the top of the page
+Quote Post
Wykrywacz
post
Post #6





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


@wookieb ma rację z tyle że zjadł nawias

  1. SELECT * FROM miasta WHERE (id_panstwa IS NOT NULL OR id_panstwa >0 )


co do nawiasu to zależnie jeżeli w tabeli masz ustawione null'e to wystarczy pierwsza cześć, jeżeli domyślne jest zero to tylko druga część

1. SELECT * FROM miasta WHERE id_panstwa IS NOT NULL

2. SELECT * FROM miasta WHERE id_panstwa >0)

Ten post edytował Wykrywacz 21.01.2009, 16:20:37
Go to the top of the page
+Quote Post
robos85
post
Post #7





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


Cytat(Wykrywacz @ 21.01.2009, 16:15:28 ) *
  1. SELECT panstwa FROM panstwa LEFT JOIN miasta ON panstwa.id = miasta.panstwa_id

chyba "Ja chciałbym pobrać listę tylko tych państw, dla których w tabeli 'miasta' są dodane jakieś wpisy "



TAK, mój błąd:/
Listę państw chcę.
Go to the top of the page
+Quote Post
wookieb
post
Post #8





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




odrazu dostaniesz liczbe miast w danym panstwie
  1. SELECT a.*, (SELECT count(id) FROM miasta WHERE id_panstwa=a.id) AS ile FROM panstwa a WHERE ile>0


Cytat
@wookieb ma rację z tyle że zjadł nawias

Zadziała tez bez niego

Ten post edytował wookieb 21.01.2009, 16:24:59
Go to the top of the page
+Quote Post
Wykrywacz
post
Post #9





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


no a jak byś miał w tabeli domyślnie null i cześci id nadawał po prostu wartość 0 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ?

Niema sensu uczyć się złych nawyków.
Go to the top of the page
+Quote Post
wookieb
post
Post #10





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




Tobie bardziej chodzi o blad skladniowy. Nawias nie jest tam konieczny.
Wiem ze lepiej trzymac sie konsekwencji ze albo sie daje nulle albo 0 ale wolalem dac przyklad uniwersalny zeby potem nie bylo kolejnego tematu "dlaczego zapytanie mi nie działa tak jak chce"
Go to the top of the page
+Quote Post
robos85
post
Post #11





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


Chodzi mi o listę państw - nie miast:)
Go to the top of the page
+Quote Post
wookieb
post
Post #12





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




Cytat(robos85 @ 21.01.2009, 16:36:24 ) *
Chodzi mi o listę państw - nie miast:)

profilaktycznie masz o zapytanie wiecej. Odpowiedz na twoje pytanie juz otrzymales.
Go to the top of the page
+Quote Post
Wykrywacz
post
Post #13





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


no to dostałeś w
Cytat
SELECT panstwa FROM panstwa LEFT JOIN miasta ON panstwa.id = miasta.panstwa_id


a ja w takim razie pomogłem ;P:P:P
Go to the top of the page
+Quote Post
robos85
post
Post #14





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

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


  1. SELECT DISTINCT (
  2. `p`.`name`
  3. )
  4. FROM `country` `p`
  5. JOIN `city` `m` ON `p`.`id` = `m`.`country_id`


Rozwiązanie jest dobre i optymalne?
Wyniki są poprawne ale jestem ciekaw czy można to rozwiązać "lepiej"
Go to the top of the page
+Quote Post
Wykrywacz
post
Post #15





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


tak (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 6.10.2025 - 14:46