[ dule_ns @ 18.01.2011. 21:09 ] @
Tabele

CREATE TABLE IF NOT EXISTS `estado`.`ovca` (
`id` INT NOT NULL AUTO_INCREMENT ,
`naziv` VARCHAR(45) NOT NULL ,
`datum_rodjenja` DATETIME NULL ,
`boks_id` INT NOT NULL ,
`rasa` VARCHAR(3) NULL ,
`pol` VARCHAR(1) NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_ovca_boks1` (`boks_id` ASC) ,
CONSTRAINT `fk_ovca_boks1`
FOREIGN KEY (`boks_id` )
REFERENCES `estado`.`boks` (`id` )
ON DELETE RESTRICT
ON UPDATE RESTRICT)
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `estado`.`boks` (
`id` INT NOT NULL AUTO_INCREMENT ,
`naziv` VARCHAR(45) NOT NULL ,
`stala_id` INT NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_boks_stala` (`stala_id` ASC) ,
CONSTRAINT `fk_boks_stala`
FOREIGN KEY (`stala_id` )
REFERENCES `estado`.`stala` (`id` )
ON DELETE RESTRICT
ON UPDATE RESTRICT)
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `estado`.`stala` (
`id` INT NOT NULL AUTO_INCREMENT ,
`naziv` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB


Upit

select b.id as boks , count(o.id) as broj from `estado`.`ovca` o, `estado`.`boks` b
where o.boks_id = b.id
and b.stala_id = 4
group by b.id

Kada postavim upit da mi vrati broj ovaca po boksu on vrati samo za one boksove kod kojih broj nije nula. Meni trebaju svi.

Unapred zahvalan.
[ bogdan.kecman @ 18.01.2011. 22:40 ] @
left join .. dakle nesto tipa

Code:

select   b.id as boks , count(o.id) as broj from 
  `estado`.`ovca` o left join `estado`.`boks` b on o.boks_id = b.id
where   b.stala_id = 4 group by  b.id
[ dule_ns @ 19.01.2011. 11:32 ] @
Radi.

Samo mala izmena zamene se tabele ovca i boks znači:

Code:

select   b.id as boks , count(o.id) as broj from 
  `estado`.`boks` b left join `estado`.`ovca` o on o.boks_id = b.id
where   b.stala_id = 4 group by  b.id


Hvala puno.
[ bogdan.kecman @ 19.01.2011. 12:05 ] @
stado, ovca .. koja razlika :D ... bitno samo da koristis LEFT join da bi uvatio te bez vrednosti ..