Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

THIAGO MENGALI

Select em Sql Server

Recommended Posts

tenho uma dúvida:preciso criar um select no sql server, sendo que preciso unir o seguinte:select documento.codigo, documento.data, itensdocumento.codigoitem, itendocumento.descricaodocumento.codigocliente from documentoinner join documento on documento.codigo = itensdocumento.codigoO que esta pegando é: Na tabela Itensdocumento tenho os campos qtde_pedida e qtde_entregue, e preciso que liste apenas os itens de documento, que tenham todos os itensdocumento.qtde_pedida = itensdocuemnto.qtde_entregue. Se algum dos itens for diferente não devo mosrar nenhum.e não posso usar view, stored procedure, nada disso, tem que ser apenas uma instrução SQL pra ser executada em um gerador de relatórios.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lah

 

--SELECT SOMENTE DOS CAMPOS QUE QUER

SELECT documento.codigo, documento.data, itensdocumento.codigoitem, itendocumento.descricao ,documento.codigocliente

 

-- DAS TABELAS QUE PASSOU, COM INNER JOIN ONDE CODIGO DE AMBAS FOREM IGUAIS "E" QTDE PEDIA IGUAL A QTDE ENTREGUE

FROM documento

INNER JOIN ITENSdocumento ON documento.codigo = itensdocumento.codigo

 

AND itensdocumento.qtde_pedida = itensdocuemnto.qtde_entregue

Roda isso no analyser ;)

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

até aí eu fiz, o problema é que preciso que liste apenas os documentos em que todos os itens tem a a qtde_pedida = qtde_entregue, se um dos itens não teiver estas qtdes iguais, não é pra listar nehum...

 

 

 

Vamos lah

 

--SELECT SOMENTE DOS CAMPOS QUE QUER

SELECT documento.codigo, documento.data, itensdocumento.codigoitem, itendocumento.descricao ,documento.codigocliente

 

-- DAS TABELAS QUE PASSOU, COM INNER JOIN ONDE CODIGO DE AMBAS FOREM IGUAIS "E" QTDE PEDIA IGUAL A QTDE ENTREGUE

FROM documento

INNER JOIN ITENSdocumento ON documento.codigo = itensdocumento.codigo

 

AND itensdocumento.qtde_pedida = itensdocuemnto.qtde_entregue

Roda isso no analyser ;)

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa.. mals.. errei o select

 

Seu inner join tb estava incorreto;

 

 

--SELECT SOMENTE DOS CAMPOS QUE QUER

SELECT documento.codigo, documento.data, itensdocumento.codigoitem, itendocumento.descricao ,documento.codigocliente

 

-- DAS TABELAS QUE PASSOU, COM INNER JOIN ONDE CODIGO DE AMBAS FOREM IGUAIS

FROM documento

INNER JOIN ITENSdocumento ON documento.codigo = itensdocumento.codigo

 

-- "ONDE" QTDE PEDIA IGUAL A QTDE ENTREGUE

WHERE itensdocumento.qtde_pedida = itensdocuemnto.qtde_entregue

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas nesse caso, se em um documento tenho 3 itens com as qtdes iguais e 2 diferentes, ele vai me retornar estes 3 iguais, e não quero que retorne estes iguais entende... é esse o meu problema... não posso retornar esses tres quando um dos itens do documento for diferente.desde JÁ AGRADEÇO PELA AJUDA..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada nisso ::set nocount ondeclare @table1 table (cod char(1))declare @table2 table (cod char(1))insert into @table1 (cod) values ('A')insert into @table2 (cod) values ('B')insert into @table1 (cod) values ('B')insert into @table2 (cod) values ('C')print 'TABELA 1' select * from @table1print 'TABELA 2'select * from @table2PRINT ' --------------- junções na cláusula FROM --------------- 'print 'INNER JOIN --> somente mostra o que esta na table1 e table2 com a mesma chave'select * from @table1 t1inner join @table2 t2 on t1.cod = t2.codprint 'LEFT JOIN --> mostra o que esta na table1 e table2 com a mesma chave e o que esta somente na table1'select * from @table1 t1left join @table2 t2 on t1.cod = t2.codprint 'RIGHT JOIN --> mostra o que esta na table1 e table2 com a mesma chave e o que esta somente na table2'select * from @table1 t1right join @table2 t2 on t1.cod = t2.codPRINT ' --------------- junções na cláusula WHERE --------------- 'print 'INNER JOIN = --> somente mostra o que esta na table1 e table2 com a mesma chave'select * from @table1 t1, @table2 t2where t1.cod = t2.codprint 'LEFT JOIN *= --> mostra o que esta na table1 e table2 com a mesma chave e o que esta somente na table1'select * from @table1 t1, @table2 t2where t1.cod *= t2.codprint 'RIGHT JOIN =* --> mostra o que esta na table1 e table2 com a mesma chave e o que esta somente na table2'select * from @table1 t1, @table2 t2where t1.cod =* t2.codCódigo retirado de iMasters...By MESTRE ERIVA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estamos aki pra ajudar ;)

 

Bom,

 

Deixa eu ver se consegui entender.

 

NO SELECT:

 

SELECT documento.codigo, documento.data, itensdocumento.codigoitem, itendocumento.descricao ,documento.codigocliente

 

FROM documento

INNER JOIN ITENSdocumento ON documento.codigo = itensdocumento.codigo

 

WHERE itensdocumento.qtde_pedida = itensdocuemnto.qtde_entregue

 

Se ele te retornar 3 linhas de um documento, voce NÃO quer que apareça este documento.

 

Neste select você consegue listar um item somente.

SELECT documento.codigo, documento.data, itensdocumento.codigoitem, itendocumento.descricao ,documento.codigocliente

 

FROM documento

INNER JOIN ITENSdocumento ON documento.codigo = itensdocumento.codigo

 

GROUP BY documento.codigo, documento.data, itensdocumento.codigoitem, itendocumento.descricao ,documento.codigocliente

HAVING (itensdocumento.qtde_pedida = itensdocuemnto.qtde_entregue)

 

Vou fazer um teste rapido aqui no meu server e já te passo uma resolução ok?!

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é o seguinte:Eu consigo gerar um select da quantidade de itens que tem qtde_entregue = qtde_pedidaO que eu preciso é o seguinte: Listar apenas os documentos, em que todos os itens dele tenham qtde_pedida = qtde_entregue.Por exemplo:Um documento tem 5 intens, com a 3 com a qtde_pedida = qtde_entregue e 2 com a qtde_pedida <> qtde_entregue. Este documento não deve aparecer.Agora se todos os itens do documento tiverem qtde_pedida = qtde_entregue então este pedido deve aparecer com todos os seus itens

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.