Problem in queries N : N

Asked

Viewed 22 times

0

I wonder why I can not search a query in tables that have the relationship N to N. I need to search the name of the product, the name of its manufacturer, the name and email of its suppliers, only that My Sql returns 'Unknown column supplier.nome in field list', The point is, I don’t know where the mistake is. Note : the error is in the second JOIN, but I do not know why, since I have two foreign keys. Soon My Sql should return the vendor data. Here are all the tables and the query command I created for this problem:

create table fabricante(
idFabricante int primary key auto_increment,
nome VARCHAR(45) not null
);

create table produto(
idProduto int primary key auto_increment,
idClassificacao int,
idFabricante int,
nome varchar(45) not null,
descricao varchar(100),
valor_Venda FLOAT not null,
quantidade int default '0'
);

create table fornecedor(
cnpj int primary key, 
nome varchar(45) not null,
ie varchar(15) unique not null,
endereco varchar(45),
bairro varchar(30),
cidade varchar(30),
estado varchar(2) default 'SP',
cep varchar(8),
telefone varchar(8) unique,
email varchar(50) unique
);

create table produto_has_fornecedor(
idProduto int,
cnpj int,
foreign key(idProduto) references produto(idProduto),
foreign key(cnpj) references fornecedor(cnpj)
);

SELECT produto.nome AS 'Produto', fabricante.nome AS 'Fabricante', fornecedor.nome, fornecedor.email
FROM produto
JOIN fabricante
ON fabricante.idFabricante = produto.idFabricante
JOIN produto_has_fornecedor
ON produto_has_fornecedor.cnpj = fornecedor.cnpj;
  • Didn’t you miss doing a JOIN with the vendor table in your query? I believe that product_has_supplier should have a JOIN with the product tables and another with supplier.

  • I did with the supplier, but I’m not able to put another JOIN underneath

1 answer

0

Just add the table with the proper joining condition:

SELECT produto.nome AS 'Produto', fabricante.nome AS 'Fabricante', fornecedor.nome, fornecedor.email
FROM produto
JOIN fabricante
ON fabricante.idFabricante = produto.idFabricante
JOIN produto_has_fornecedor
ON produto_has_fornecedor.idProduto = produto.idProduto
JOIN fornecedor
ON produto_has_fornecedor.cnpj = fornecedor.cnpj;

Browser other questions tagged

You are not signed in. Login or sign up in order to post.