Série da semana: Primeiros passos no Angular

Veja mais

INNER JOIN SQL CONSULTA

13/03/2019

16

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
Responder

Post mais votado

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


Responder

Mais Posts

13/03/2019

Alex Lekao

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,
Responder

13/03/2019

Samuel

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,



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?
Responder

14/03/2019

Alex Lekao

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,



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
Responder

14/03/2019

Fernando C

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;
Responder