OFF-TOPIC DUVIDA INSTRUCAO SQL

FIREONBOMB 08/08/2007 10:45:38
#229948
(OFF-Topic) Dúvida instrução sql

Alguém poderia ajudar, estou com dúvida em fazer o seguinte select.



Primeiro dou um

select campo from tabela_b

este select irá devolver n registros, digamos um vetor com vários numeros (33213123,66456646 etc....);


aí possuo uma tabela como descrita abaixo,

primeiramente preciso de um select que irá excluir todos os registros onde o campo_a esteja no select acima...
depois, que some todos os valores do campo_b




tabela_A
campo_a campo_b
33213123 123,00
53535554 223,00
34654646 500,00
66456646 800,00
43426646 899,00
64566646 300,00
11111664 254,00
62541764 135,00

ficaria assim

campo_a campo_b
33213123 123,00**este valor não sairia pois está no primeiro select
53535554 223,00
34654646 500,00
66456646 800,00**este valor não sairia pois está no primeiro select
43426646 899,00
64566646 300,00
11111664 254,00
62541764 135,00


depois a soma dos valores (223+500+899+300+254+135),

caso alguém possa ajudar, ou mesmo indicando uma apostila avançada, com uma pista de como procurar,
obrigado a todos





USUARIO.EXCLUIDOS 08/08/2007 10:51:56
#229951
tente o seguinte

delete tabela_B where campo_a in (o select que vc quer.)
FIREONBOMB 08/08/2007 12:05:10
#229983
obrigado pela dica, mas não posso deletar nenhum registro da tabela.

USUARIO.EXCLUIDOS 10/08/2007 19:39:17
#230441
Citação:

primeiramente preciso de um select que irá excluir todos os registros


Cuidado ao se expressar. Uma frase mal colocada receberá uma resposta equivocada!

Espero que não estejamos valando de Access!!!!

Use UNION, uma união sem o uso da opção ALL remove todas as duplicidades (equivale ao uso de DISTINCT).
SELECT campoa, campob FROM tabela_a
UNION
SELECT campoa, campob FROM tabela_b

Com relação a soma:
Tendo em visto que uma soma ira retornar uma única linha NÃO é possível na mesma consulta exibir múltiplas linhas e a soma das mesmas.
Uma solução é o uso de subquery na clausula FROM (novamente espero que não estejamos falando de Access).

SELECT sum(s.campob)
FROM
( SELECT campoa, campob FROM tabela_a
UNION
SELECT campoa, campob FROM tabela_b ) s


LCSD 11/08/2007 00:29:47
#230460
Citação:

FIREONBOMB escreveu:
obrigado pela dica, mas não posso deletar nenhum registro da tabela.



Kara eu tbem teria dito para vc deletar....o JOSE.NIZ tem razão...cuidado...

E a sugestão dele pode ser aplicada perfeitamente......



USUARIO.EXCLUIDOS 11/08/2007 03:26:52
#230463
Resposta escolhida
Se for o que entendi, vc pode fazer assim:

SELECT SUM(campo_b) FROM tabela_a
WHERE campo_a NOT IN (SELECT campo FROM tabela_b)


Explicando:
SELECT SUM(campo_b) FROM tabela_a
Soma os valores do cambo_b na tabela_a

WHERE campo_a NOT IN (SELECT campo FROM tabela_b)
Pega todos os registros em que o campo_a NÃO ESTEJA (NOT IN) no SELECT (SELECT campo FROM tabela_b)

é isso, qualquer dúvida poste...abços
Tópico encerrado , respostas não são mais permitidas