none
Fazer um select com "not in" RRS feed

  • Pergunta

  • Estou montando um relatório que vai ter um select cujos dados não estão em uma outra tabela. O SQL seria o seguinte:

    select * from tabela1 where campo1 not in (select campo1 from tabela2)

    Quer dizer, quero mostrar todos os dados da tabela1 que não constam na tabela2.

    Não estou conseguindo fazer isso no Crystal XI.

    quarta-feira, 24 de setembro de 2014 01:46

Todas as Respostas


  • Quando precisar verificar somente a existência, ou não, de um registro em uma tabela, use o EXISTS.

    No seu caso, ficaria assim:

    "SELECT *

    FROM Tabela1  

    WHERE NOT EXISTS (SELECT 1 FROM Tabela2 WHERE Tabela2.Campo1 = Tabela1.Campo1)"

    quarta-feira, 24 de setembro de 2014 04:30
  • SELECT *

    FROM Tabela1  A  WITH(NOLOCK)

    WHERE NOT EXISTS (SELECT 1 FROM Tabela2  B  WITH(NOLOCK) WHERE A.Campo1 = B.Campo1)

    quarta-feira, 24 de setembro de 2014 12:01
  • Não consigo criar a Expressão SQL no Crystal dessa forma.

    Meu select foi:

    select * from "RH_REL_COLABORADOR" where not exists (SELECT "COL_IN_CODIGO" FROM "RH_RESCISAO" where "RH_REL_COLABORADOR"."COL_IN_CODIGO" = "RH_RESCISAO"."COL_IN_CODIGO")

    Também tentei dessa forma:

    select * from "RH_REL_COLABORADOR" where not exists (SELECT "COL_IN_CODIGO" FROM "RH_RESCISAO")

    Em ambos os selects, dá a mesma msg: "Erro ao compilar a expressão SQL. Falha ao recuperar dados do banco de dados. Detalhes: ORA-00936: expressão não encontrada."

    Eu utilizo o Crystal Reports XI. Se eu fizer o mesmo select via PL/SQL, por exemplo, funciona tranquilamente.

    quarta-feira, 24 de setembro de 2014 12:52