rbiaggio Postado Junho 7, 2016 Denunciar Share Postado Junho 7, 2016 Pessoal, tenho uma tabela e preciso que um dos campos, o "status_disco" que pode ter o conteúdo de "Critical" ou "Warning", seja convertido em coluna, uma para critico outra para warning. Alguém consegue me ajudar a fazer isso? Banco mysql tabela: tb_disco_windows Colunas em anexo. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Junho 7, 2016 Denunciar Share Postado Junho 7, 2016 Leia sobre pivot table aqui no forum. No seu caso crie um campo IF( status_disco = "Critical", "X", "") AS Critical; e outro campo IF( status_disco = " Warning ", "X", "") AS Warning Link para o comentário Compartilhar em outros sites More sharing options...
0 rbiaggio Postado Junho 8, 2016 Autor Denunciar Share Postado Junho 8, 2016 Denis, Eu tenho lido sobre PIVOT, procurei no google mas não consegue aplicar a minha necessidade. Quanto ao IF. O meu problema é que eu tenho no campo nome_disco, dois registros iguais, Disco D, por exemplo, e no campo status_disco, eu tenho um Warning e um Critical para o mesmo disco D, ou seja, meu retorno é de duas linhas com o campo nome_disco iguais, disco D, porém status_disco tem um Critical e um Warning. Eu preciso que o retorno da query me traga somente uma linha Disco D: e duas colunas Critical e Warning. Obrigado pela resposta. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Junho 8, 2016 Denunciar Share Postado Junho 8, 2016 Experimente: SELECT nome_disco, SUM(IF( status_disco = "Critical", 1, )) AS Critical, SUM(IF( status_disco = " Warning", 1, )) AS Warning FROM tb_disco_windows GROUP BY nome_disco Link para o comentário Compartilhar em outros sites More sharing options...
0 rbiaggio Postado Junho 8, 2016 Autor Denunciar Share Postado Junho 8, 2016 Muito obrigado, exatamente isso que precisava. SELECT nome_disco, SUM(IF( status_disco = "Critical", 1, "" )) AS Critical, SUM(IF( status_disco = "Warning", 1, "")) AS Warning FROM tb_disco_windows WHERE (`id_solic_disco_windows` = '3' AND hostname_server='ndcingmgm001') GROUP BY nome_disco Como resolvo o tópico? Link para o comentário Compartilhar em outros sites More sharing options...
0 rbiaggio Postado Junho 8, 2016 Autor Denunciar Share Postado Junho 8, 2016 Quando insiro a query no código PHP dá erro. Acredito que com o SUM eu tenha que colocar algum outro parametro para funcionar. $query_windows = "SELECT nome_monitor_infra, SUM(IF( status_monitor_infra = "Critical", 1, "" )) AS Critical, SUM(IF( status_monitor_infra = "Warning", 1, "")) AS Warningfrom tb_infra_windows WHERE (`id_solic_infra_windows` = '". $id_solic ."' AND hostname_server='". $hostname ."') GROUP BY nome_monitor_infra"; $result_windows = mysql_query($query_windows, $conecta) or die(mysql_error()); $rows_query_windows = mysql_fetch_assoc($result_windows); $totalRows_query_windows = mysql_num_rows($result_windows); Link para o comentário Compartilhar em outros sites More sharing options...
0 rbiaggio Postado Junho 8, 2016 Autor Denunciar Share Postado Junho 8, 2016 Resolvido, eram as aspas duplas junto com aspas simples. Obrigado a todos pela ajuda, só preciso resolver o tópico mas não sei como hahaha. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rbiaggio
Pessoal, tenho uma tabela e preciso que um dos campos, o "status_disco" que pode ter o conteúdo de "Critical" ou "Warning", seja convertido em coluna, uma para critico outra para warning. Alguém consegue me ajudar a fazer isso?
Banco mysql
tabela: tb_disco_windows
Colunas em anexo.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados