[ turshija @ 05.01.2010. 19:05 ] @
Postovanje ...
Imam jedan problem i verujem da se moze efikasno resiti samo jednim SQL upitom ...
Pojednostavljen primer:
imam dve tabele:
Code:
kategorije                proizvodi

kid    ime                ime              kid
-------------------        -------------------
1     kategorija1          traktor         1
2     kategorija2          frizider        2
3     kategorija3          pegla           2
4     kategorija4          avion           4
                           paprika         4


E sada ...
Kako izlistati sve kategorije koje imaju 2 ili vise proizvoda ?
Ne idu mi nesto ti "ugnjezdeni" upiti ili kako se vec zovu ... :)
Znaci konkretno na mom primeru, upit koji ce izlistati:
Code:
2 kategorija2
4 kategorija4

Verujem da bi islo nesto tipa:

"SELECT * FROM kategorije WHERE (COUNT (1) FROM proizvodi WHERE kid='nesto')>2"

Moze mala pomoc ? :)

edit: pokusavam i ovaj upit ali ne radi :(

SELECT * FROM kategorije k
WHERE (
COUNT (1) FROM proizvodi p
WHERE p.kid=k.kid
)>2



EDIT2:

Uspesno sam resio problem prchkajuci po ovom proslom upitu i radi sve lepo ... :)

[Ovu poruku je menjao turshija dana 05.01.2010. u 20:36 GMT+1]
[ bogdan.kecman @ 06.01.2010. 10:03 ] @

select *, (select count(*) as koliko from proizvodi where proizvodi.kid = kategorije.kid) from kategorije where koliko > 1;

select kategorije.kid, kategorije.ime, count(*) as koliko from proizvodi join kategorije using (kid) group by kategorije.kid having koliko > 1;

...
[ bantu @ 07.01.2010. 12:33 ] @
Ne vidim zasto komplikovati, ne trebaju ovdje ugnjezdeni upiti.
Code:
SELECT k.kid, k.ime, count(*) as Broj_proizvoda
FROM kategorije k, proizvodi p
WHERE k.kid = p.kid
GROUP BY k.kid, k.ime
HAVING count(*) > 1;
[ bogdan.kecman @ 07.01.2010. 12:36 ] @
bantu, po cemu se "nekomplikovani" upit razlikuje od drugog primera upita iz posta pre toga ?
[ bantu @ 07.01.2010. 13:19 ] @
Ni po cemu, prevido sam taj dio posta.
[ bogdan.kecman @ 07.01.2010. 13:22 ] @
dobro je, nisam prolupao :D ... zbunio si me 1/1 :D