Citat:
Nub.Saibot:
Probaj ovako:
SELECT DISTINCTROW oblasti.Oblast_ID, oblasti.Oblast_Ime, count(*) as broj
FROM oblasti
RIGHT OUTER JOIN knjige on oblasti.Oblast_ID = knjige.Oblast_ID
GROUP BY oblasti.Oblast_ID
Pozdrav
Odakle ti samo ta hrabrost :)
1. Sta ce ti distinctrow?
2. count(*) daje pogresne rezultate u ovom slucaju cak i da je join OK
3. UVEK proveri da li u Group By imas sve kolone iz select-a (gore nedostaje ime oblasti)
4. Tabele su pomesane iliti join je obrnut. Kada imas dve tabele i hoces da iz tabele A dobijes sve redove, cak i ako ne postoje odgovarajuci u tablei B, pise se: From A LEFT OUTER JOIN B on ... Lako je da zapamtis, LEFT/RIGHT ti kaze na kojoj je strani tabela iz koje hoces SVE redove. Znaci mozes da koristis i RIGHT join, samo okreni tabele:
Evo onog sto se trazi:
Tabela A: id, name (id je key)
Tabela B: id, ... (id je foreign key iz A)
select A.name, count(B.id)
from A LEFT outer join B on a.id = b.id
group by A.name
Isto to:
select A.name, count(B.id)
from B RIGHT outer join A on b.id = a.id
group by A.name
count(nesto) daje broj redova u kome "nesto" nije null. Posto iz B dobijes null za id ako istog nema, broj redova ce biti 0. Distinct mozes da stavis u count ako hoces broj razlcitih vrednosti.
A computer once beat me at chess, but it was no match for me at kick boxing.