Usuário com melhor resposta
Como verificar se um campo existe como ID na mesma tabela?

Pergunta
-
Olá.
Meu problema é o seguinte: tenho uma tabela como esta abaixo (só exemplo):
TABELA SEQUENCIA1
ID | NOME | REF
1 | Item 1 | 0
2 | Item 2 | 0
4 | Item 4 | 2
5 | Item 5 | 1
6 | Item 6 | 3
O campo REF é uma referência ao ID de um item da própria tabela. Pensando nisso, como faço uma query para trazer somente os itens da tabela cujo REF não existe como um ID da própria tabela? (no exemplo acima seria o Item 6, já que o REF dele é o ID 3, que não existe na tabela)
A situação é a seguinte: na tabela são armazenados itens "Pai" e itens "Filho". Esse REF é para saber qual é o "Pai" dos itens "Filho". Quando o REF de um item é igual a Zero é porque ele é "Pai". Então no exemplo acima os itens 1 e 2 são "Pai" e seus filhos são os tens 5 e 4 respectivamente. Porém no caso do Item 6 o "Pai" referente a ele foi removido e ele ficou "órfão". Preciso que a query traga exatamente estes itemns "órfãos".
Não sei se ficou confuso. Qualquer dúvida é só avisar.
Obrigado!
Ramon Gonzalez Inla
- Editado R. Gonza terça-feira, 17 de janeiro de 2012 14:40
Respostas
-
Apenas uma das formas de se fazer:
create table #teste
(
id int,
nome varchar(50),
ref int
)
insert into #teste (id, nome, ref) values (1, 'ITEM 1', 0)
insert into #teste (id, nome, ref) values (2, 'ITEM 2', 0)
insert into #teste (id, nome, ref) values (4, 'ITEM 4', 2)
insert into #teste (id, nome, ref) values (5, 'ITEM 5', 1)
insert into #teste (id, nome, ref) values (6, 'ITEM 6', 3)
SELECT *
FROM #teste A
LEFT JOIN #teste B
ON A.ref = B.id
WHERE B.id is null
Abraços, Weslley Moura MCP - MCTS - ORA SqlExpert- Sugerido como Resposta Rodrigo Ataíde terça-feira, 17 de janeiro de 2012 20:20
- Marcado como Resposta R. Gonza quarta-feira, 18 de janeiro de 2012 18:11
Todas as Respostas
-
Apenas uma das formas de se fazer:
create table #teste
(
id int,
nome varchar(50),
ref int
)
insert into #teste (id, nome, ref) values (1, 'ITEM 1', 0)
insert into #teste (id, nome, ref) values (2, 'ITEM 2', 0)
insert into #teste (id, nome, ref) values (4, 'ITEM 4', 2)
insert into #teste (id, nome, ref) values (5, 'ITEM 5', 1)
insert into #teste (id, nome, ref) values (6, 'ITEM 6', 3)
SELECT *
FROM #teste A
LEFT JOIN #teste B
ON A.ref = B.id
WHERE B.id is null
Abraços, Weslley Moura MCP - MCTS - ORA SqlExpert- Sugerido como Resposta Rodrigo Ataíde terça-feira, 17 de janeiro de 2012 20:20
- Marcado como Resposta R. Gonza quarta-feira, 18 de janeiro de 2012 18:11
-