Então Matheus o IN aceita sim campos relacionados, ao contrário do que
eu aprendir na faculade ?
talvez o que eu aprendir seja realcionado ao padrão SQL..COISA ASSIM

Em 22 de junho de 2012 17:55, Matheus de Oliveira
<matioli.math...@gmail.com> escreveu:
> Pra ser uma consulta correlacionada não precisa ter o EXISTS, basta que
> tenha referência ao campo da consulta externa na interna.
>
>
>> SELECT Nome
>>        FROM Editora E
>>        WHERE Codigo IN (SELECT Editora
>>                                   FROM Livro
>>                                   WHERE Lancamento IS NOT NULL AND
>> E.CODIGO = 3)
>
>
>
> Geralmente quando isso ocorre, usamos o campo externo para comparar com
> algum valor de um campo interno, no seu exemplo você compara com uma
> constante, logo seria a mesma coisa (só que abaixo é mais eficiente) que:
>
>
> SELECT Nome
>        FROM Editora E
>        WHERE Codigo IN (SELECT Editora
>            FROM Livro
>            WHERE Lancamento IS NOT NULL)
>        AND E.CODIGO = 3
>
> Mas só pra deixar mais claro, acho que seu exemplo seria adaptado com
> subconsulta correlacionada da seguinte forma:
>
>
> SELECT Nome
>        FROM Editora E
>        WHERE Codigo IN (SELECT Editora
>            FROM Livro
>            WHERE Lancamento IS NOT NULL AND E.CODIGO = Livro.Editora)
>
> E aí um EXISTS cairia muito bem:
>
>
> SELECT Nome
>        FROM Editora E
>        WHERE EXISTS(SELECT 1
>            FROM Livro
>            WHERE Lancamento IS NOT NULL AND E.CODIGO = Livro.Editora)
>
> Deu pra entender?
>
> Atenciosamente,
> --
> Matheus de Oliveira
>
>
>
> 2012/6/22 Jonas Nepomuceno <jona...@gmail.com>
>>
>> Estou com dúvidas , sobre alguns conceitos
>>
>> Eu aprendi o seguinte na faculdade.
>>
>> Subconsultas não-correlacionadas:
>>
>> SELECT Nome
>>        FROM Editora E
>>        WHERE Codigo IN (SELECT Editora
>>                                   FROM Livro
>>                                   WHERE Lancamento IS NOT NULL)
>>
>> Nome das editoras que já lançaram livros.
>>
>> Nesse caso, a subconsulta não depende da outra, e é executa de forma
>> independente,
>> porém se eu implementar ela no postgres
>>
>> SELECT Nome
>>        FROM Editora E
>>        WHERE Codigo IN (SELECT Editora
>>                                   FROM Livro
>>                                   WHERE Lancamento IS NOT NULL AND
>> E.CODIGO = 3)
>>
>>
>>
>> O E.CODIGO É DA CONSULTA EXTERNA, pelo que aprendi na faculdade isso
>> não seria possível,
>> pois nesse caso a consulta interna teria que ser totalmente
>> independente da consulta externa.
>>
>>
>>
>> No meu entendimento isso sória possível nas : Subconsultas
>> correlacionadas: com exists isso seria possível.
>>
>> Alguém pode me responder essa dúvida ?
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>> São Paulo Realmente é aquilo que
>> _______________________________________________
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
São Paulo Realmente é aquilo que
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a