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 <[email protected]>
> 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
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral