INNER JOIN SQL CONSULTA
Preciso exibir o nome de produtos, mas quando eu executo o comando só exibe o nome de 1 produto nas 4 colunas, alguem poderia me ajudar ?
SELECT
CODVENDA AS CÓDIGO,
NOMEPRODUTO AS PRODUTO,
NOMEPRODUTO AS PRODUTO1,
NOMEPRODUTO AS PRODUTO2,
NOMEPRODUTO AS PRODUTO3,
NOME AS CLIENTE,
DATAVENDA AS DATAVENDA,
'R$' + cast(VALORVENDA as VARCHAR(50)) AS VALORVENDA,
VENDIDOPOR as POR,
QTD AS QUANTIDADE
FROM VENDA JOIN PRODUTO
ON VENDA.CODPRODUTO = PRODUTO.CODPRODUTO
JOIN CLIENTE
ON VENDA.CODCLI = CLIENTE.CODCLI
SELECT
CODVENDA AS CÓDIGO,
NOMEPRODUTO AS PRODUTO,
NOMEPRODUTO AS PRODUTO1,
NOMEPRODUTO AS PRODUTO2,
NOMEPRODUTO AS PRODUTO3,
NOME AS CLIENTE,
DATAVENDA AS DATAVENDA,
'R$' + cast(VALORVENDA as VARCHAR(50)) AS VALORVENDA,
VENDIDOPOR as POR,
QTD AS QUANTIDADE
FROM VENDA JOIN PRODUTO
ON VENDA.CODPRODUTO = PRODUTO.CODPRODUTO
JOIN CLIENTE
ON VENDA.CODCLI = CLIENTE.CODCLI
Samuel
Curtidas 0
Melhor post
Emerson Nascimento
14/03/2019
Precisa ser algo assim:
SELECT C.CODVENDA AS CÓDIGO, PR0.NOMEPRODUTO AS PRODUTO, PR1.NOMEPRODUTO AS PRODUTO1, PR2.NOMEPRODUTO AS PRODUTO2, PR3.NOMEPRODUTO AS PRODUTO3, C.NOME AS CLIENTE, V.DATAVENDA AS DATAVENDA, 'R$' + cast(V.VALORVENDA as VARCHAR(50)) AS VALORVENDA, V.VENDIDOPOR as POR, V.QTD AS QUANTIDADE FROM VENDA V LEFT JOIN PRODUTO PR0 ON PR0.CODPRODUTO = V.CODPRODUTO LEFT JOIN PRODUTO PR1 ON PR1.CODPRODUTO = V.CODPRODUTO1 LEFT JOIN PRODUTO PR2 ON PR2.CODPRODUTO = V.CODPRODUTO2 LEFT JOIN PRODUTO PR3 ON PR3.CODPRODUTO = V.CODPRODUTO3 JOIN CLIENTE C ON C.CODCLI = V.CODCLI
GOSTEI 1
Mais Respostas
Alex Lekao
13/03/2019
Oi Samuel, boa tarde!!!!
Sem mais dados da tabela e tal, fica um pouco mais difícil de ajudar, mas aparentemente(do jeito que esta descrito.) vc esta usando sempre o mesmo nome.
Você precisa usar o INNER JOIN mesmo? ele só vai apresentar itens que constem nas duas tabelas, se por acaso algum item da tabela "principal" não estiver na tabela secundaria, ele tbm será ignorado na relação.
Talvez seja interessante usar o LEFT JOIN para se certificar, ou dar mais detalhes da tabela, como sua estrutura "real" para tentarmos te ajudar melhor.
Atenciosamente,
Sem mais dados da tabela e tal, fica um pouco mais difícil de ajudar, mas aparentemente(do jeito que esta descrito.) vc esta usando sempre o mesmo nome.
Você precisa usar o INNER JOIN mesmo? ele só vai apresentar itens que constem nas duas tabelas, se por acaso algum item da tabela "principal" não estiver na tabela secundaria, ele tbm será ignorado na relação.
Talvez seja interessante usar o LEFT JOIN para se certificar, ou dar mais detalhes da tabela, como sua estrutura "real" para tentarmos te ajudar melhor.
Atenciosamente,
GOSTEI 0
Samuel
13/03/2019
Oi Samuel, boa tarde!!!!
Sem mais dados da tabela e tal, fica um pouco mais difícil de ajudar, mas aparentemente(do jeito que esta descrito.) vc esta usando sempre o mesmo nome.
Você precisa usar o INNER JOIN mesmo? ele só vai apresentar itens que constem nas duas tabelas, se por acaso algum item da tabela "principal" não estiver na tabela secundaria, ele tbm será ignorado na relação.
Talvez seja interessante usar o LEFT JOIN para se certificar, ou dar mais detalhes da tabela, como sua estrutura "real" para tentarmos te ajudar melhor.
Atenciosamente,
Sem mais dados da tabela e tal, fica um pouco mais difícil de ajudar, mas aparentemente(do jeito que esta descrito.) vc esta usando sempre o mesmo nome.
Você precisa usar o INNER JOIN mesmo? ele só vai apresentar itens que constem nas duas tabelas, se por acaso algum item da tabela "principal" não estiver na tabela secundaria, ele tbm será ignorado na relação.
Talvez seja interessante usar o LEFT JOIN para se certificar, ou dar mais detalhes da tabela, como sua estrutura "real" para tentarmos te ajudar melhor.
Atenciosamente,
aqui esta meu banco de dados
TABLE CLIENTE
(
CODCLI INT IDENTITY NOT NULL PRIMARY KEY,
NOME VARCHAR(50),
CNPJ CHAR(18) ,
EMAIL VARCHAR(50),
TEL CHAR (13),
ENDERECO TEXT
)
TABLE PRODUTO (
CODPRODUTO INT NOT NULL PRIMARY KEY IDENTITY,
NOMEPRODUTO VARCHAR(50),
QUANTIDADE CHAR(10),
VALORPRODUTO MONEY
)
TABLE VENDA (
CODVENDA INT NOT NULL PRIMARY KEY IDENTITY,
CODPRODUTO INT FOREIGN KEY REFERENCES PRODUTO (CODPRODUTO),
CODPRODUTO1 INT,
CODPRODUTO2 INT,
CODPRODUTO3 INT,
CODCLI INT FOREIGN KEY REFERENCES CLIENTE (CODCLI),
QTD CHAR(10),
DATAVENDA DATE,
VALORVENDA MONEY,
VENDIDOPOR VARCHAR(MAX)
)
eu preciso mostrar o nome do produto com o codigo armazenado nos campos codProduto1, codProduto2,codProduto3, pegando o nome da tabela produto, pode me ajudar?
GOSTEI 0
Alex Lekao
13/03/2019
Oi Samuel, boa tarde!!!!
Sem mais dados da tabela e tal, fica um pouco mais difícil de ajudar, mas aparentemente(do jeito que esta descrito.) vc esta usando sempre o mesmo nome.
Você precisa usar o INNER JOIN mesmo? ele só vai apresentar itens que constem nas duas tabelas, se por acaso algum item da tabela "principal" não estiver na tabela secundaria, ele tbm será ignorado na relação.
Talvez seja interessante usar o LEFT JOIN para se certificar, ou dar mais detalhes da tabela, como sua estrutura "real" para tentarmos te ajudar melhor.
Atenciosamente,
Sem mais dados da tabela e tal, fica um pouco mais difícil de ajudar, mas aparentemente(do jeito que esta descrito.) vc esta usando sempre o mesmo nome.
Você precisa usar o INNER JOIN mesmo? ele só vai apresentar itens que constem nas duas tabelas, se por acaso algum item da tabela "principal" não estiver na tabela secundaria, ele tbm será ignorado na relação.
Talvez seja interessante usar o LEFT JOIN para se certificar, ou dar mais detalhes da tabela, como sua estrutura "real" para tentarmos te ajudar melhor.
Atenciosamente,
aqui esta meu banco de dados
TABLE CLIENTE
(
CODCLI INT IDENTITY NOT NULL PRIMARY KEY,
NOME VARCHAR(50),
CNPJ CHAR(18) ,
EMAIL VARCHAR(50),
TEL CHAR (13),
ENDERECO TEXT
)
TABLE PRODUTO (
CODPRODUTO INT NOT NULL PRIMARY KEY IDENTITY,
NOMEPRODUTO VARCHAR(50),
QUANTIDADE CHAR(10),
VALORPRODUTO MONEY
)
TABLE VENDA (
CODVENDA INT NOT NULL PRIMARY KEY IDENTITY,
CODPRODUTO INT FOREIGN KEY REFERENCES PRODUTO (CODPRODUTO),
CODPRODUTO1 INT,
CODPRODUTO2 INT,
CODPRODUTO3 INT,
CODCLI INT FOREIGN KEY REFERENCES CLIENTE (CODCLI),
QTD CHAR(10),
DATAVENDA DATE,
VALORVENDA MONEY,
VENDIDOPOR VARCHAR(MAX)
)
eu preciso mostrar o nome do produto com o codigo armazenado nos campos codProduto1, codProduto2,codProduto3, pegando o nome da tabela produto, pode me ajudar?
Então, ainda não consegui entender muito bem sua necessidade.
Voce esta fazendo testes, eh isso?
Não sei se entendi bem, mas segue um modelo baseado no seu modelo.
SELECT CODVENDA AS CÓDIGO, VENDA.NOMEPRODUTO AS PRODUTO, VENDA.NOMEPRODUTO1 AS PRODUTO1, VENDA.NOMEPRODUTO2 AS PRODUTO2, VENDA.NOMEPRODUTO3 AS PRODUTO3, NOME AS CLIENTE, DATAVENDA AS DATAVENDA, 'R$' + cast(VALORVENDA as VARCHAR(50)) AS VALORVENDA, VENDIDOPOR as POR, QTD AS QUANTIDADE FROM VENDA JOIN PRODUTO ON VENDA.CODPRODUTO = PRODUTO.CODPRODUTO JOIN CLIENTE ON VENDA.CODCLI = CLIENTE.CODCLI
GOSTEI 0
Fernando C
13/03/2019
olha, estou vendo que é um exercício, mas não acho boa lógica vc ter exatamente tres produtos em cada venda - sugiro que crie uma outra tabela relacionando venda e id do produto.
sua consulta então ficaria assim:
SELECT vendas.id, clientes.nome, produtos.nome
FROM (clientes INNER JOIN vendas ON clientes.Código = vendas.cliente) INNER JOIN (produtos INNER JOIN vendas_produtos ON produtos.Código = vendas_produtos.id_produto) ON vendas.id = vendas_produtos.id_venda;
sua consulta então ficaria assim:
SELECT vendas.id, clientes.nome, produtos.nome
FROM (clientes INNER JOIN vendas ON clientes.Código = vendas.cliente) INNER JOIN (produtos INNER JOIN vendas_produtos ON produtos.Código = vendas_produtos.id_produto) ON vendas.id = vendas_produtos.id_venda;
GOSTEI 1