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