Loading ...
Sorry, an error occurred while loading the content.

Re: [riojug] O.T.: Ajuda para entender o comportamento de SQL

Expand Messages
  • Victor Vidigal
    não entendi está certo... ele mostrou nenhum registro porque nao tem nenhuma linha onde A é diferente de 1 e B é diferente de 1 simultaneamente. se vc
    Message 1 of 4 , May 19, 2011
    • 0 Attachment
      não entendi
      está certo...
      ele mostrou nenhum registro porque nao tem nenhuma linha onde A é diferente de 1 e B é diferente de 1 simultaneamente.
      se vc tivesse um INSERT INTO AAA000 VALUES (22'Reg x');
      ele mostraria
      --
      Victor Vidigal Ribeiro
      MSN: victorvidigal@...
      SKYPE: victor.vidigal
      Tel.: 32 8831-1366
             21 8446-5622


      Em 19 de maio de 2011 17:51, Jean Jorge Michel <jeanjmichel@...> escreveu:
       

      Pessoal,

      Alguém sabe o porquê disso?

       

      CREATE TABLE AAA000 (A NUMBER(1), B NUMBER(1), C VARCHAR(20))

      INSERT INTO AAA000 VALUES (
      1, 1, 'Reg 1');
      INSERT INTO AAA000 VALUES (
      1, 1, 'Reg 2');
      INSERT INTO AAA000 VALUES (
      1, 2, 'Reg 3');
      INSERT INTO AAA000 VALUES (
      1, 3, 'Reg 4');
      INSERT INTO AAA000 VALUES (
      2, 1, 'Reg 5');
      INSERT INTO AAA000 VALUES (
      3, 1, 'Reg 6');
      INSERT INTO AAA000 VALUES (
      4, 1, 'Reg 7');

       

      SELECT * FROM AAA000

       

       A  B C

      -- -- -----

       1  1 Reg 1

       1  1 Reg 2

       1  2 Reg 3

       1  3 Reg 4

       2  1 Reg 5

       3  1 Reg 6

       4  1 Reg 7

       

       

      SELECT * FROM AAA000 WHERE A = 1 AND B = 1

       

       A  B C

      -- -- -----

       1  1 Reg 1

       1  1 Reg 2

       

      SELECT * FROM AAA000 WHERE A <> 1 AND B <> 1

       

      A  B C

      -- -- -----

       

      Na terceira instrução ele está considerando as duas condições, excluindo do retorno todo mundo que A = 1 OU B = 1. Na verdade a intenção aqui é que ele faça como na segunda instrução onde A = 1 e TAMBÉM B = 1.

       

      OS: Oracle e SQL Server é o mesmo comportamento.

       

      Valeu.




      --
      Best regards,
      Jean J. Michel

      * Sent from my cellphone, please forgive the lack of accents and punctuation marks ;)
      My blogs: http://www.jeanjmichel.blogspot.com and http://www.anonymousbiker.wordpress.com
      My Twitter: http://twitter.com/jeanjmichel


    • Jean Jorge Michel
      Desconsiderem. Viajei f_oda agora, não vi que não tinha ngm 2 2 Reg X. Obrigado. ... -- Best regards, Jean J. Michel * Sent from my cellphone, please forgive
      Message 2 of 4 , May 19, 2011
      • 0 Attachment
        Desconsiderem.

        Viajei f_oda agora, não vi que não tinha ngm 2 2 Reg X.


        Obrigado.



        Em 19 de maio de 2011 17:51, Jean Jorge Michel <jeanjmichel@...> escreveu:

        Pessoal,

        Alguém sabe o porquê disso?

         

        CREATE TABLE AAA000 (A NUMBER(1), B NUMBER(1), C VARCHAR(20))

        INSERT INTO AAA000 VALUES (
        1, 1, 'Reg 1');
        INSERT INTO AAA000 VALUES (
        1, 1, 'Reg 2');
        INSERT INTO AAA000 VALUES (
        1, 2, 'Reg 3');
        INSERT INTO AAA000 VALUES (
        1, 3, 'Reg 4');
        INSERT INTO AAA000 VALUES (
        2, 1, 'Reg 5');
        INSERT INTO AAA000 VALUES (
        3, 1, 'Reg 6');
        INSERT INTO AAA000 VALUES (
        4, 1, 'Reg 7');

         

        SELECT * FROM AAA000

         

         A  B C

        -- -- -----

         1  1 Reg 1

         1  1 Reg 2

         1  2 Reg 3

         1  3 Reg 4

         2  1 Reg 5

         3  1 Reg 6

         4  1 Reg 7

         

         

        SELECT * FROM AAA000 WHERE A = 1 AND B = 1

         

         A  B C

        -- -- -----

         1  1 Reg 1

         1  1 Reg 2

         

        SELECT * FROM AAA000 WHERE A <> 1 AND B <> 1

         

        A  B C

        -- -- -----

         

        Na terceira instrução ele está considerando as duas condições, excluindo do retorno todo mundo que A = 1 OU B = 1. Na verdade a intenção aqui é que ele faça como na segunda instrução onde A = 1 e TAMBÉM B = 1.

         

        OS: Oracle e SQL Server é o mesmo comportamento.

         

        Valeu.




        --
        Best regards,
        Jean J. Michel

        * Sent from my cellphone, please forgive the lack of accents and punctuation marks ;)
        My blogs: http://www.jeanjmichel.blogspot.com and http://www.anonymousbiker.wordpress.com
        My Twitter: http://twitter.com/jeanjmichel



        --
        Best regards,
        Jean J. Michel

        * Sent from my cellphone, please forgive the lack of accents and punctuation marks ;)
        My blogs: http://www.jeanjmichel.blogspot.com and http://www.anonymousbiker.wordpress.com
        My Twitter: http://twitter.com/jeanjmichel
      • bruno bg
        *SELECT* * *FROM* AAA000 *WHERE* A = 1 *AND* B =1 mostrar todos ONDE A=1 E B=1 *SELECT* * *FROM* AAA000 *WHERE* A 1 *AND* B 1 mostrar todos ONDE A
        Message 3 of 4 , May 19, 2011
        • 0 Attachment
          SELECT * FROM AAA000 WHERE A = 1 AND B =1 
          mostrar todos ONDE  A=1  E  B=1
           

          SELECT * FROM AAA000 WHERE A <> 1 AND B <> 1

          mostrar todos ONDE  A diferente de    E   B diferente de 1
           
           
          tente colocar  OR no lugar de AND
          SELECT * FROM AAA000 WHERE A <> 1    OR   B <> 1
           
           
          brunobg
           
           
           
           
          Em 19 de maio de 2011 17:55, Victor Vidigal <victorvidigal@...> escreveu:
           

          não entendi

          está certo...
          ele mostrou nenhum registro porque nao tem nenhuma linha onde A é diferente de 1 e B é diferente de 1 simultaneamente.
          se vc tivesse um INSERT INTO AAA000 VALUES (22'Reg x');
          ele mostraria
          --
          Victor Vidigal Ribeiro
          MSN: victorvidigal@...
          SKYPE: victor.vidigal
          Tel.: 32 8831-1366
                 21 8446-5622


          Em 19 de maio de 2011 17:51, Jean Jorge Michel <jeanjmichel@...> escreveu:
           

          Pessoal,

          Alguém sabe o porquê disso?

           

          CREATE TABLE AAA000 (A NUMBER(1), B NUMBER(1), C VARCHAR(20))

          INSERT INTO AAA000 VALUES (
          1, 1, 'Reg 1');
          INSERT INTO AAA000 VALUES (
          1, 1, 'Reg 2');
          INSERT INTO AAA000 VALUES (
          1, 2, 'Reg 3');
          INSERT INTO AAA000 VALUES (
          1, 3, 'Reg 4');
          INSERT INTO AAA000 VALUES (
          2, 1, 'Reg 5');
          INSERT INTO AAA000 VALUES (
          3, 1, 'Reg 6');
          INSERT INTO AAA000 VALUES (
          4, 1, 'Reg 7');

           

          SELECT * FROM AAA000

           

           A  B C

          -- -- -----

           1  1 Reg 1

           1  1 Reg 2

           1  2 Reg 3

           1  3 Reg 4

           2  1 Reg 5

           3  1 Reg 6

           4  1 Reg 7

           

           

          SELECT * FROM AAA000 WHERE A = 1 AND B = 1

           

           A  B C

          -- -- -----

           1  1 Reg 1

           1  1 Reg 2

           

          SELECT * FROM AAA000 WHERE A <> 1 AND B <> 1

           

          A  B C

          -- -- -----

           

          Na terceira instrução ele está considerando as duas condições, excluindo do retorno todo mundo que A = 1 OU B = 1. Na verdade a intenção aqui é que ele faça como na segunda instrução onde A = 1 e TAMBÉM B = 1.

           

          OS: Oracle e SQL Server é o mesmo comportamento.

           

          Valeu.




          --
          Best regards,
          Jean J. Michel

          * Sent from my cellphone, please forgive the lack of accents and punctuation marks ;)
          My blogs: http://www.jeanjmichel.blogspot.com and http://www.anonymousbiker.wordpress.com
          My Twitter: http://twitter.com/jeanjmichel




        Your message has been successfully submitted and would be delivered to recipients shortly.