Informática, perguntado por diogoluizmede, 1 ano atrás

Por utilizar o modelo relacional, que é baseado no modelo matemático da teoria geral dos conjuntos e relações, a SQL permite que uma mesma consulta seja realizada de várias formas diferentes. Das afirmações abaixo, qual(is) dela(s) é(são) equivalente(s) à consulta:

SELECT telefone.numero
FROM pessoa, telefone
WHERE pessoa.id = telefone.pessoa_fk
AND pessoa.nome LIKE 'E%';

I - SELECT telefone.numero FROM pessoa JOIN telefone ON pessoa.numero = telefone.pessoa_fk AND nome LIKE 'E%';
II - SELECT telefone.numero FROM telefone WHERE telefone.pessoa_fk LEFT (SELECT pessoa.id FROM pessoa WHERE nome LIKE 'E%');
III - SELECT telefone.numero FROM pessoa LEFT JOIN telefone WHERE pessoa.id = telefone.pessoa_fk AND pessoa.nome LIKE 'E%';
IV - SELECT telefone.numero FROM pessoa INNER JOIN telefone WHERE pessoa.id = telefone.pessoa_fk AND pessoa.nome LIKE 'E%';

Soluções para a tarefa

Respondido por asantana8
9
A cláusula LEFT JOIN traz tudo o que há na tabela à esquerda do JOIN e direita do JOIN ou que pelo menos exista na tabela da esquerda do JOIN.
A cláusula INNER JOIN traz tudo o que há nas duas tabelas ao mesmo tempo.

Sendo assim, a sentaça equivalente correta é o item: IV;
A sentença I compara 'numero' com 'pessoa_fk', quando deveria comparar 'id';
A sentença II mistura LEFT com sub select o que não é previsto em SQL ANSI;
A sentença III na prática diz "traga as pessoas mesmo se não houver telefone", mas o que se deseja exibir é exatamente o telefone das pessoas, logo não faz sentido este forma de consulta.


diogoluizmede: Muito obrigado amigo!
Perguntas interessantes