Select Para Registros que Faltam

26/06/2004

0

Pessoal tenhu uma duvida... Como Fazer um select que me retorne todos os valores da tabela A que não estejam cadastrados na tabela B.

Na versão 4.1 podemos trabalhar com clausulas tipo
´Where Not In´ dentro de subqueries.... mas eu não posso usar a versão 4.1 somente a 4.0 então alguem pode me dar uma luz>?


Lucasnishimura

Lucasnishimura

Responder

Posts

28/06/2004

Kandrus

Da uma olhada neste texto acho que é disso que vc esta precisando

Atualmente o MySQL suporta somente sub seleções de um formulário INSERT ... SELECT ... e REPLACE ... SELECT .... Entretanto, você pode usar a função IN() em outros contextos.

Em alguns casos você pode reescrever a query sem uma sub seleção:

SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);

Isto pode ser reescrito como:

SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id;

As queries:

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);
SELECT * FROM table1 WHERE NOT EXISTS (SELECT id FROM table2 where table1.id=table2.id);

Podem ser reescritas como:

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL

Para subqueries mais complexas você pode às vezes criar tabelas temporárias para armazenar a subquery. Em alguns casos, entretanto, essa opção não irá funcionar. O mais frequentemente encontrado destes casos aparece em instruções DELETE, para o qual padrão SQL não suporta joins (exceto nas sub-queries. Para esta situação existem duas opções disponível até que subqueries sejam suportadas pelo MySQL.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar