

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
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:
pessoas que compartilham o pai e a mãe com pelo menos uma outra pessoa.
pessoas que compartilham o pai ou a mãe com pelo menos uma outra pessoa.
pessoas que compartilham o avô paterno e a avó materna com pelo menos uma outra pessoa.
pessoas que compartilham o avô paterno ou a avó materna com pelo menos uma outra pessoa.