ďťż
 
[MySQL] wiele tabel w left join ďťż
 
[MySQL] wiele tabel w left join
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MySQL] wiele tabel w left join



R - 13-03-2006 11:23
[MySQL] wiele tabel w left join
  Witam grupowiczow.

Mam taka sytuacje, jest tabela z ofertami, ktora ma m.in. takie pola:

id_wojewodztwa, id_powiatu, id_gminy, id_dzielnicy

odwoluja sie one do tablic odpowiednio wojewodztwa, powiaty, gminy, dzielnice

pola id_gminy i id_dzielnicy moga byc NULL
id_wojewodztwa, id_powiatu sa NOT NULL i zawsze musza byc podane

mam takie zapytanie aby pobrac wszystkie dane z ofert + nazwy jednostek
administracyjnych:

SELECT
`o`.*, `w`.`nazwa` as `wojewodztwo`, `p`.`nazwa` as `powiat`,
`g`.`nazwa` as `gmina`, `d`.`nazwa` as `dzielnica`
FROM
`oferty` as `o`
LEFT JOIN
(`wojewodztwa` as `w`, `powiaty` as `p`, `gminy` as `g`, `dzielnice` as `d`)
ON
(`w`.`id_wojewodztwa` = `o`.`id_wojewodztwa`
AND `p`.`id_powiatu` = `o`.`id_powiatu`
AND `g`.`id_gminy` = `o`.`id_gminy`
AND `d`.`id_dzielnicy` = `o`.`id_dzielnicy`
)

jesli dodam rekord, ktory ma wojewodztwo, powiat, gmine (miejska) i dzielnice
moje zapytanie dziala OK

ale np. jest powiat grocki, ktory nie ma zadnej gminy - ma tylko dzielnice
wtedy id_gminy w ofertach jest NULL,
jest sobie powiat XYZ, ktory ma tylko gminy, wowczas id_dzielnicy jest NULL

wtedy SELECT na left joinie zwraca NULL dla wszystich left joinow takze tych
NOT NULL:
wojewodztwa (jest id), powiatu (jest id)
i w zaleznosci od powiatu grockiego/ziemskiego: gminy/powiatu

jak napisac poprawnego left joina abym mogl pobrac wszystkie oferty, plus
tyle informacji o jednostkach administracyjnych ile moge?

z gory dzieki za pomoc
pzdr R

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/





keczerad - 13-03-2006 11:23

  >ON
> (`w`.`id_wojewodztwa` = `o`.`id_wojewodztwa`
> AND `p`.`id_powiatu` = `o`.`id_powiatu`
> AND `g`.`id_gminy` = `o`.`id_gminy`
> AND `d`.`id_dzielnicy` = `o`.`id_dzielnicy`
> )

wiesz jak dziala AND ? to jest klucz do twojej dolegliwosci

--
keczerad

www.e-mo.com.pl




R - 13-03-2006 11:23

  keczerad <keczerad@poczta.fm> napisał(a):

> >ON
> > (`w`.`id_wojewodztwa` = `o`.`id_wojewodztwa`
> > AND `p`.`id_powiatu` = `o`.`id_powiatu`
> > AND `g`.`id_gminy` = `o`.`id_gminy`
> > AND `d`.`id_dzielnicy` = `o`.`id_dzielnicy`
> > )
>
> wiesz jak dziala AND ? to jest klucz do twojej dolegliwosci

wlasnie po to uzywam LEFT JOINa...

jak wtedy zaznaczyc, ze id_powiatu ma byc rowne id_powiatu z tabeli o aliasie p?

prosze o podpowiedz

z gory dzieki
pzdr R

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




R - 13-03-2006 11:24

  OK, moze komus sie kiedys przyda, rozwiazanie jest takie:
trzeba rozpisac wszystkie zlaczenia osobno:

LEFT JOIN
`wojewodztwa` as `w`
ON
`w`.`id_wojewodztwa` = `o`.`id_wojewodztwa`
LEFT JOIN
`powiaty` as `p`
ON
`p`.`id_powiatu` = `o`.`id_powiatu`
LEFT JOIN
`gminy` as `g`
ON
`g`.`id_gminy` = `o`.`id_gminy`
LEFT JOIN
`dzielnice` as `d`
ON
`d`.`id_dzielnicy` = `o`.`id_dzielnicy`

i dziala jak nalezy

pzdr R

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/





=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 13-03-2006 11:24

  R wrote:
> Witam grupowiczow.
>
> Mam taka sytuacje, jest tabela z ofertami, ktora ma m.in. takie pola:
>
> id_wojewodztwa, id_powiatu, id_gminy, id_dzielnicy
>
> odwoluja sie one do tablic odpowiednio wojewodztwa, powiaty, gminy, dzielnice
>
> pola id_gminy i id_dzielnicy moga byc NULL
> id_wojewodztwa, id_powiatu sa NOT NULL i zawsze musza byc podane
>
> mam takie zapytanie aby pobrac wszystkie dane z ofert + nazwy jednostek
> administracyjnych:
>
> SELECT
> `o`.*, `w`.`nazwa` as `wojewodztwo`, `p`.`nazwa` as `powiat`,
> `g`.`nazwa` as `gmina`, `d`.`nazwa` as `dzielnica`
> FROM
> `oferty` as `o`
> LEFT JOIN
> (`wojewodztwa` as `w`, `powiaty` as `p`, `gminy` as `g`, `dzielnice` as `d`)
> ON
> (`w`.`id_wojewodztwa` = `o`.`id_wojewodztwa`
> AND `p`.`id_powiatu` = `o`.`id_powiatu`
> AND `g`.`id_gminy` = `o`.`id_gminy`
> AND `d`.`id_dzielnicy` = `o`.`id_dzielnicy`
> )

',' to synonim zwykłego joina, czego łatwo się domyslić po wynikach działania tego selekta.
Musisz pracowicie left join'ować każdą tabele osobno.

--
P.M.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?= MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • chinska-zupka.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com