Code:
create table naslov (
id_naslov integer not null,
naziv varchar(15),
constraint pk_naslov primary key (id_naslov)
);
create table iznajmljivanje (
id_iznajmljivanje integer not null,
datum date,
constraint pk_iznaj primary key (id_iznajmljivanje)
);
create table stavke (
id_iznajmljivanje integer not null,
redni_broj integer not null,
id_naslov integer not null,
constraint pk_stavke primary key (id_iznajmljivanje, redni_broj, id_naslov),
constraint fk_stavke foreign key (id_iznajmljivanje)
references iznajmljivanje (id_iznajmljivanje)
on delete restrict on update cascade
);
insert into naslov values (1, 'Kuca');
insert into naslov values (2, 'Kola');
insert into naslov values (3, 'Kisa');
insert into naslov values (4, 'Prodavnica');
insert into naslov values (5, 'Mleko');
insert into naslov values (6, 'Makarone');
insert into iznajmljivanje values (1, '2007-02-10');
insert into iznajmljivanje values (2, '2007-03-22');
insert into iznajmljivanje values (3, '2007-04-01');
insert into iznajmljivanje values (4, '2007-03-10');
insert into iznajmljivanje values (5, '2007-04-22');
insert into iznajmljivanje values (6, '2007-05-01');
insert into stavke values (1, 1, 1);
insert into stavke values (1, 2, 3);
insert into stavke values (2, 1, 2);
insert into stavke values (2, 2, 1);
insert into stavke values (2, 3, 3);
insert into stavke values (3, 1, 2);
insert into stavke values (3, 2, 1);
insert into stavke values (3, 3, 3);
insert into stavke values (4, 1, 5);
insert into stavke values (4, 2, 6);
insert into stavke values (5, 1, 4);
insert into stavke values (5, 2, 6);
insert into stavke values (5, 3, 5);
insert into stavke values (6, 1, 4);
insert into stavke values (6, 2, 5);
SQL upit:
Code:
select n.naziv,count(s.id_naslov) as broj
from stavke s
left join naslov n
on s.id_naslov = n.id_naslov
group by n.naziv
order by broj desc
Testirano na PostgreSQL 8.2. Primer je urađen na brzinu, možda ima logičkih grešaka, ali suština je u funkciji "count" i "group by" klauzuli.
Someone's sitting in the shade today because someone planted a tree a long time ago.