Seja um banco de dados para uma árvore genealógica simples, composto de uma única relação, conforme definido a seguir pelo comando CREATE TABLE da SQL. Os atributos id_mae e id_pai são chaves estrangeiras que referenciam a mãe e o pai de uma pessoa, respectivamente.
CREATE TABLE pessoa (
id INT NOT NULL,
nome VARCHAR(40) NOT NULL,
id_mae INT NULL,
id_pai INT NULL,
PRIMARY KEY (id),
FOREIGN KEY(id_mae) REFERENCES pessoa(id),
FOREIGN KEY(id_pai) REFERENCES pessoa(id) )
A expressão SQL que segue foi escrita para obter informação do banco de dados:
SELECT * FROM pessoa F
WHERE EXISTS (
SELECT * FROM pessoa P
WHERE P.id_pai = F.id_pai AND F.id <> P.id)
OR EXISTS ( SELECT * FROM pessoa P
WHERE P.id_mae = F.id_mae AND F.id <> P.id)
Considerando que o símbolo '<>' representa um operador de comparação que significa 'diferente de', e a expressão 'compartilhar um parente' denota 'ter um parente em comum' (por exemplo, se duas pessoas 'compartilham um primo', significa que este é primo de ambas as pessoas), então a execução da expressão SQL dada resulta nas: