2
I have these tables:
CREATE TABLE empresa (
id_empresa INT,
nome_empresa VARCHAR(40),
razao_social VARCHAR(40),
PRIMARY KEY ( id_empresa )
);
CREATE TABLE departamento (
id_departamento INT,
id_empresa INT,
nome_departamento VARCHAR(40),
PRIMARY KEY ( id_departamento ),
FOREIGN KEY ( id_empresa )
REFERENCES empresa ( id_empresa )
);
CREATE TABLE produto (
id_produto INT,
id_departamento INT,
descricao VARCHAR(40),
valor INT,
PRIMARY KEY ( id_produto ),
FOREIGN KEY ( id_departamento )
REFERENCES departamento ( id_departamento )
);
And these records:
insert into empresa(id_empresa, nome_empresa, razao_social)
values (1, 'Casas Bahia', 'Loja de produtos diversos');
insert into departamento(id_departamento, id_empresa, nome_departamento)
values (1, 1, 'Eletrodomesticos');
insert into departamento(id_departamento, id_empresa, nome_departamento)
values (2, 1, 'Produtos de Limpeza');
insert into produto(id_produto, id_departamento, descricao, valor)
values (1, 1, 'Televisao', 1200);
insert into produto(id_produto, id_departamento, descricao, valor)
values (2, 1, 'Computador', 4600);
insert into produto(id_produto, id_departamento, descricao, valor)
values (3, 2, 'Detergente', 2);
insert into produto(id_produto, id_departamento, descricao, valor)
values (4, 2, 'Esponja', 6);
I would like to return the name of the department, and the product with the highest value and its name, but it always returns values to more.
Eletrodomesticos Computador 4600
Produtos de Limpeza Esponja 6
select d.nome_departamento, p.descricao, p.valor
from departamento d, produto p
inner join (
select descricao, max(valor) as pmax
from produto
group by descricao
) gp on p.valor = gp.pmax
where p.id_departamento = d.id_departamento;
Not working.
– Leonardo
Yeah, I saw I messed up :P see if it helps now..
– rLinhares