Da się tak wogóle ?
Dentarg - 11-11-2006 00:54
Da się tak wogóle ?
Wybaczcie jeśli pytam o głupotę, ale spałem 2,5h i jakoś nie mogę sklecić tego zapytania :).
Dane siedzą w takich tabelach:
TABLE jednostki ( id_jednostki smallint NOT NULL PRIMARY KEY, id_jednostki_nadrzednej smallint REFERENCES jednostki(id_jednostki), nazwa_jednostki varchar(80) NOT NULL, skrocona_nazwa_jednostki varchar(10) NOT NULL, kod_pocztowy_jednostki char(5) NOT NULL, miasto_jednostki varchar(40) NOT NULL, ulica_jednostki varchar(40) NOT NULL, telefon_jednostki varchar(15), jednostka_aktywna boolean NOT NULL DEFAULT ('y') );
TABLE komorki ( id_komorki smallint NOT NULL PRIMARY KEY, nazwa_komorki varchar(80) NOT NULL, skrocona_nazwa_komorki varchar(10) NOT NULL, komorka_aktywna boolean NOT NULL DEFAULT ('y') );
TABLE komorki_jednostek ( id_komorki smallint NOT NULL REFERENCES komorki(id_komorki), id_jednostki smallint NOT NULL REFERENCES jednostki(id_jednostki), komorka_jednostki_aktywna boolean NOT NULL DEFAULT ('y'), CONSTRAINT unique_kom_jedn UNIQUE (id_komorki, id_jednostki) );
Chcę się dowiedzieć w ilu jednostkach występuje dana komórka, z uwzględnieniem komórek, które nigdzie nie występują. I przy tym ostatnim warunku legne.
Na razie wymyśliłem tyle:
select k.id_komorki, k.nazwa_komorki, count(kj.id_jednostki) AS ile from komorki k, komorki_jednostek kj where kj.id_komorki=k.id_komorki group by k.id_komorki, k.nazwa_komorki order by k.nazwa_komorki;
Dostaje to co chce, ale komórek występujących zero razy nie ma :(. Jak je uwzględnić w zapytaniu ?
pzdr, Dentarg
-- Moje CV online - http://dentarg.it64.com Warcraft2 - http://warcraft2.it64.com
Paweł Matejski - 11-11-2006 00:54
Dentarg wrote: > > Chcę się dowiedzieć w ilu jednostkach występuje dana komórka, z > uwzględnieniem komórek, które nigdzie nie występują. I przy tym > ostatnim warunku legne. > > Na razie wymyśliłem tyle: > > select k.id_komorki, k.nazwa_komorki, count(kj.id_jednostki) AS ile > from komorki k, komorki_jednostek kj > where kj.id_komorki=k.id_komorki > group by k.id_komorki, k.nazwa_komorki order by k.nazwa_komorki; > > Dostaje to co chce, ale komórek występujących zero razy nie ma :(. Jak > je uwzględnić w zapytaniu ?
Użyj LEFT JOIN.
-- P.M.
den@it64.com - 11-11-2006 00:54
> Użyj LEFT JOIN. Myślałem na tym oczywiście, ale nie mogłem nic wymyslić ;). Powinno być tak (???):
select k.id_komorki, k.nazwa_komorki, k.skrocona_nazwa_komorki, count(kj.id_komorki), k.komorka_aktywna from komorki k left join komorki_jednostek kj on k.id_komorki=kj.id_komorki group by k.id_komorki, k.nazwa_komorki, k.skrocona_nazwa_komorki, k.komorka_aktywna order by k.nazwa_komorki;
?? Wynik zapytania wygląda obiecująco :)).
-- pzdr, Dentarg
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?iso-8859-2?Q?zmniejszenie_rozdzielczo=B6ci_zdj=EA=E6?=
LDAP + odbc +PostgreSQL
Zapytanie SQL w zaleznosci od parametrow w bazie danych
[MSSQL] Identity wspólne dla paru tabel
EyeOne Display 2 vs Spyder 2PRO
Kwerenda
Ksiazka ?
Szukasz inwestora do serwisu
Jasper
[mysql] licznik dzienny
zanotowane.pldoc.pisz.plpdf.pisz.pllubiatowo.xlx.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 |
|