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