Fórum Dúvida de SQL. #171873

28/07/2003

0

Estou fazendo um select de duas tabelas, como mostro abaixo:

SELECT P.num_pedido_cli, I.cod_empresa, I.num_pedido
FROM pedidos P, ped_itens I
WHERE P.num_pedido = I.num_pedido

Tenho uma outra tabela chamada Historico onde também tenho o num_pedido.

Queria selecionar todos os pedidos (da query acima) e que não contenha na tabela historico.

O que estou fazendo hoje, é criar outra query (Select * from historico where num_pedido =:pedido), onde o parâmetro pedido são todos os num_pedidos achados acima. Daí, se esta query NÃO me retornar algum valor eu faço o processamento desejado.

Obrigada.


Jussara

Jussara

Responder

Posts

28/07/2003

Fernando

SELECT P.num_pedido_cli, I.cod_empresa, I.num_pedido
FROM pedidos P, ped_itens I
WHERE P.num_pedido = I.num_pedido and
P.Historico is null -- Acrescente essa linha e verifique


ele vai selecionar o pedido onde o historico do pedido for nulo


Responder

Gostei + 0

28/07/2003

Jussara

Não é isso que preciso.
Tenho que selecionar todos os pedidos da tabela pedidos, que não contenha na tabela historico. E a chave de ligação das duas é o num_pedido.


Responder

Gostei + 0

28/07/2003

Motta

em oracle ficaria assim

SELECT P.num_pedido_cli, I.cod_empresa, I.num_pedido
FROM pedidos P, ped_itens I
WHERE P.num_pedido = I.num_pedido (+)
and i.num_pedido is null

dependendo do sql podria ser tb

SELECT P.num_pedido_cli, I.cod_empresa, I.num_pedido
FROM pedidos P
WHERE not exists
(SELECT P.num_pedido_cli, I.cod_empresa, I.num_pedido
FROM pedidos P2, ped_itens I
WHERE P2.num_pedido = I.num_pedido )


Responder

Gostei + 0

28/07/2003

Jussara

Acho que não consegui explicar direito o que preciso. Vou resumir melhor.
Tenho duas tabelas: pedidos e historico.
A tabela pedidos tem os campos: num_pedido_cli, num_pedido.
A tabela historico tem o campo: num_pedido.

Na tabela historico tem registros extraídos da tabela pedidos. Agora eu preciso selecionar na tabela pedidos, todos os registros que não constam na tabela historico.

Alguém pode me ajudar?


Responder

Gostei + 0

28/07/2003

Buosinet

Eu entendi o que vc quer, mas vc tá usando que banco?

Me mande, por email, o ExtractDDL das tabelas (só a estrutura, não precisa dados) e eu te ajudo, ok?

Buosi.


Responder

Gostei + 0

28/07/2003

Roberto Skylord

Tente isto

SELECT P.num_pedido_cli, I.cod_empresa, I.num_pedido
FROM (pedidos P INNER JOIN ped_itens I ON P.num_pedido = I.num_pedido) LEFT JOIN historico ON historico.num_pedido = pedidos.num_pedido
WHERE (historico.num_pedido IS NULL)


Responder

Gostei + 0

29/07/2003

Jeancamila

Mais simples:


SELECT P.num_pedido_cli, I.cod_empresa, I.num_pedido
FROM pedidos P, ped_itens I
WHERE P.num_pedido = I.num_pedido and p.num_pedido not in
(select h.num_pedido from historio h)


Jean Morais
Analista de Sistemas - AIX SISTEMAS


Responder

Gostei + 0

29/07/2003

Jussara

Roberto era exatamente isso que precisava. Muito obrigada a todos.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar