Dúvida de SQL.
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.
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
Curtidas 0
Respostas
Fernando
28/07/2003
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
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
GOSTEI 0
Jussara
28/07/2003
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.
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.
GOSTEI 0
Motta
28/07/2003
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 )
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 )
GOSTEI 0
Jussara
28/07/2003
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?
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?
GOSTEI 0
Buosinet
28/07/2003
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.
Me mande, por email, o ExtractDDL das tabelas (só a estrutura, não precisa dados) e eu te ajudo, ok?
Buosi.
GOSTEI 0
Roberto Skylord
28/07/2003
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)
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)
GOSTEI 0
Jeancamila
28/07/2003
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
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
GOSTEI 0
Jussara
28/07/2003
Roberto era exatamente isso que precisava. Muito obrigada a todos.
GOSTEI 0