Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #107965
    Avatar de MoloukosMoloukos
    Participante

      Boa tarde.

      Gostaria da ajuda de vocês na query abaixo:

      SELECT C.*
      FROM TB_CENTRAL C
      WHERE EXISTS (SELECT DISTINCT 1
      FROM TB_INTERMEDIARIA I
      WHERE I.ID_ETA IN (16,24)
      AND I.ID = C.ID)

      Existe alguma forma ou função que so retorno os dados caso os dois registros do in (16 e 24) existirem na tabela tb_intermediaria. Porque nesse caso se eu informar somente o 16 os dados já são retornados.
      Exemplo:
      SELECT C.*
      FROM TB_CENTRAL C
      WHERE EXISTS (SELECT DISTINCT 1
      FROM TB_INTERMEDIARIA I
      WHERE I.ID_ETA IN (16)
      AND I.ID = C.ID)

      O que preciso é somente retornar dados se os dois registros realmente existirem na tabela….

      #107967
      Avatar de rmanrman
      Participante

        @Moloukos

        Utilize 2 EXISTS e AND.


        SELECT C.*
        FROM TB_CENTRAL C
        WHERE EXISTS (SELECT 1
        FROM TB_INTERMEDIARIA I
        WHERE I.ID_ETA = 16
        AND I.ID = C.ID
        )
        AND EXISTS (SELECT 1
        FROM TB_INTERMEDIARIA I
        WHERE I.ID_ETA = 24
        AND I.ID = C.ID
        )

        Não é necessário o DISTINCT.

        #107968
        Avatar de MoloukosMoloukos
        Participante

          @man

          Dessa maneira eu tenho um problema porque a string que recebo é dinâmica.

          Posso receber na primeira chamada 12, 5, 33
          Na segunda chamada 5, 33

          Ai teria que montar dinamicamente a quantidade de exists da maneira que você passou para montar a query.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress