Citat:
Aleksa01 kaže:
Imam tabelu radnika i između ostalog u njoj su podaci o radnoj jedinici kojoj pripadaju (1-5) i to da li putuju iz drugog grada. Treba izbaciti broj putnika po jedinicama. Sa ovom naredbom izbaci sve gde ima putnika.
SELECT RJ, COUNT(putnik) AS putnici
FROM radnici
WHERE putnik=yes
GROUP BY RJ
Kako da izbaci i one radne jedinice gde ima nula putnika?
|
Neka su ti tabele
radnik(id, radna_jedinica_id, f_putnik) i tabela
radna_jedinica(id, naziv) sql upit ti bi izgledao:
select
rj.id,
rj.naziv,
coalesce(X.broj,0) broj_po_jedinici
from radna_jedinica rj
left join
(
select
p.radna_jedinica_id,
count(distinct p.id) broj --moze i bez distinct
from putnik p
where p.f_putnik=true
group by p.radna_jedinica_id
)X on X.radna_jedinica_id=rj.id
coalesce ce ti za radnu jedinicu gde nema putnika tj. gde ce X.broj biti null, vratiti nula, a kreces od tabele radnih jedinica kako bi dobio broj za svaku od njih.