rmini83 0 Denunciar post Postado Outubro 9, 2009 Pretendo fazer uma consulta em SQL que retorne dois valores, os positivos e os negativos, tudo feito só numa consulta, sem fazer em duas consultas, alguém me ajuda com a lógica disto. Agradeço desde já a atenção Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 9, 2009 SQL Server ou Mysql? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 10, 2009 Se você postar a estrutura da tabela, ajuda para entendermos oque você está falando. Compartilhar este post Link para o post Compartilhar em outros sites
lucasmartins 6 Denunciar post Postado Outubro 10, 2009 Cara, como assim, positivo e negativo??? Você falando somente isso, a primeira coisa que imaginei foi q você queria trazer tanto o valor "2" quanto o "-2" .. do mesmo campo... Se for assim, eu faria algo como: SELECT num1, num1*-1 as num1_neg, num2, num2*-1 as num2_neg, num3, num3*-1 as num3_neg FROM minha_tabela; Compartilhar este post Link para o post Compartilhar em outros sites
rmini83 0 Denunciar post Postado Outubro 10, 2009 SQL Server ou Mysql? Carlos Eduardo Mysql, desculpa pela forma que coloquei minha questão, explico mais detalhado. Tenho uma tabela PRODUTO que tem um campo QUANTIDADE, quero trazer em uma consulta só os produtos que tem quantidade positiva e os produtos que estão zerados ou com quantidade negativa. Acho que agora fico compreensível. Agradeço amigos. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 10, 2009 Acho que agora fico compreensível. Na verdade não, Tenho uma tabela PRODUTO que tem um campo QUANTIDADE, quero trazer em uma consulta só os produtos que tem quantidade positiva e os produtos que estão zerados ou com quantidade negativa. A não ser que eu esteja perdendo alguma coisa, só existem essas 3 possibilidades: menor que 0, 0 e maior que 0. Quando você diz querer uma consulta que traz apenas essas 3 possibilidades você está dizendo que quer todas as possibilidades: SELECT * FROM PRODUTOS Compartilhar este post Link para o post Compartilhar em outros sites
rmini83 0 Denunciar post Postado Outubro 10, 2009 A não ser que eu esteja perdendo alguma coisa, só existem essas 3 possibilidades: menor que 0, 0 e maior que 0. Quando você diz querer uma consulta que traz apenas essas 3 possibilidades você está dizendo que quer todas as possibilidades: SELECT * FROM PRODUTOS Sim, é isto, no fim eu vou trazer todos os produtos, mas a minha dúvida é como contar, isto o que eu preciso, contar os elementos negativos e positivos, do campo QUANTIDADE da minha tabela PRODUTO Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 10, 2009 Veja só: mysql> select * from produtos; +----+------------+ | id | quantidade | +----+------------+ | 1 | 10 | | 2 | 1 | | 3 | -5 | | 4 | 0 | | 5 | -2 | | 6 | 0 | +----+------------+ 6 rows in set (0.00 sec) Temos 2 produtos que têm quantidade negativa (3,5), dois zerados (4,6) e dois com quantidade positiva (1,2). Para separá-los: mysql> select -> if ( quantidade = 0 , 1 , 0 ) 'zerado', -> if ( quantidade > 0 , 1 , 0 ) 'positivo', -> if ( quantidade < 0 , 1 , 0 ) 'negativo' -> from produtos; +--------+----------+----------+ | zerado | positivo | negativo | +--------+----------+----------+ | 0 | 0 | 1 | | 0 | 0 | 1 | | 1 | 0 | 0 | | 1 | 0 | 0 | | 0 | 1 | 0 | | 0 | 1 | 0 | +--------+----------+----------+ 6 rows in set (0.00 sec) Criando uma view com esses dados para facilitar: mysql> create or replace view quantidades as -> select -> if ( quantidade = 0 , 1 , 0 ) 'zerado', -> if ( quantidade > 0 , 1 , 0 ) 'positivo', -> if ( quantidade < 0 , 1 , 0 ) 'negativo' -> from produtos; Query OK, 0 rows affected (0.00 sec) Com a view basta fazer a consulta como se fosse uma tabela: mysql> select * from quantidades; +--------+----------+----------+ | zerado | positivo | negativo | +--------+----------+----------+ | 0 | 0 | 1 | | 0 | 0 | 1 | | 1 | 0 | 0 | | 1 | 0 | 0 | | 0 | 1 | 0 | | 0 | 1 | 0 | +--------+----------+----------+ 6 rows in set (0.00 sec) Agora contando: mysql> select -> sum(negativo) 'negativos', -> sum(zerado) 'zerados', -> sum(positivo) 'positivos' -> from quantidades; +-----------+---------+-----------+ | negativos | zerados | positivos | +-----------+---------+-----------+ | 2 | 2 | 2 | +-----------+---------+-----------+ 1 row in set (0.00 sec) É isso ? Compartilhar este post Link para o post Compartilhar em outros sites
rmini83 0 Denunciar post Postado Outubro 10, 2009 Muito Obrigado, funcionou 100%, muito legal esse recurso IF não conhecia, só para concluir, seria possível explicar mais detalhado os parámetros do IF, isto não compreendi muito bem, obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 10, 2009 seria possível explicar mais detalhado os parámetros do IF, isto não compreendi muito bem, obrigado! O IF funciona igual ao do PHP: if ( condicao , instrucao se verdadeiro , instrucao se falso ); mysql> select if( 1=1 , 'Verdadeiro' , 'Falso' ); +------------------------------------+ | if( 1=1 , 'Verdadeiro' , 'Falso' ) | +------------------------------------+ | Verdadeiro | +------------------------------------+ 1 row in set (0.00 sec) mysql> select if( 1=2 , 'Verdadeiro' , 'Falso' ); +------------------------------------+ | if( 1=2 , 'Verdadeiro' , 'Falso' ) | +------------------------------------+ | Falso | +------------------------------------+ 1 row in set (0.00 sec) ;) Compartilhar este post Link para o post Compartilhar em outros sites
rmini83 0 Denunciar post Postado Outubro 10, 2009 Entendi, valeu pela ajuda! Até mais Compartilhar este post Link para o post Compartilhar em outros sites