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

Responder a