Vanderlan 2 Denunciar post Postado Outubro 1, 2015 Boa noite. Como eu poderia juntar essas duas querys? $sql = "SELECT eps, count(*) as total_atrasadas FROM controle WHERE status IN('EXECUÇÃO', 'EXECUCAO') AND YEAR(STR_TO_DATE(prazoobra,'%d/%m/%Y')) = YEAR(CURRENT_DATE()) AND STR_TO_DATE(prazoobra,'%d/%m/%Y') < CURRENT_DATE() GROUP BY eps"; -------------------------------------------------------------------------------------------- $sql = "SELECT eps, count(*) as total_atrasadas FROM controle WHERE status IN('EXECUÇÃO', 'EXECUCAO') AND YEAR(STR_TO_DATE(prazoobra,'%d/%m/%Y')) = YEAR(CURRENT_DATE()) AND STR_TO_DATE(prazoobra,'%d/%m/%Y') > CURRENT_DATE() GROUP BY eps"; Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 1, 2015 $sql = "SELECT eps, count(*) as total_atrasadas FROM controle WHERE status IN('EXECUÇÃO', 'EXECUCAO') AND YEAR(STR_TO_DATE(prazoobra,'%d/%m/%Y')) = YEAR(CURRENT_DATE()) AND ( STR_TO_DATE(prazoobra,'%d/%m/%Y') < CURRENT_DATE() OR STR_TO_DATE(prazoobra,'%d/%m/%Y') > CURRENT_DATE() ) GROUP BY eps";o que me faz pensar.. você precisa mesmo testar isso? ou poderia retirar esse teste ? vc só não quer pregar, se for IGUAL a hoje? Compartilhar este post Link para o post Compartilhar em outros sites
Vanderlan 2 Denunciar post Postado Outubro 1, 2015 É que estou trabalhando com uns gráficos e preciso pegar as duas possibilidades. tipo esse aqui $sql = "SELECT fiscal, COUNT(CASE status WHEN 'ENERGIZADA' THEN 1 END) AS energizada, COUNT(CASE status WHEN 'EXECUCAO' THEN 1 END) AS execucao FROM " . TABLE_NAME . " GROUP BY fiscal"; $PDO = db_connect(); $stmt = $PDO->query($sql); $data = $stmt->fetchAll(PDO::FETCH_ASSOC); // print_r($data); exit; $chartData = "['Fiscal', 'Energizada', 'Execução'],"; foreach ($data as $_data) { $chartData .= sprintf("['%s', %d, %d],", $_data['fiscal'], $_data['energizada'], $_data['execucao']); } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Gráfico</title> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1.1", {packages:["bar"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ <?php echo $chartData ?> ]); var options = { chart: { title: 'Demanda de Obras ', subtitle: 'Por Fiscal', } }; var chart = new google.charts.Bar(document.getElementById('chart')); chart.draw(data, options); } </script> </head> <body> <div id="chart" style="width: 850px; height: 450px;"></div> </body> </html> Eu tentei fazer assim ó: <?php require 'init.php'; $sql = "(SELECT eps, count(*) as total_atrasadas FROM controle WHERE status IN('EXECUÇÃO', 'EXECUCAO') AND YEAR(STR_TO_DATE(prazoobra,'%d/%m/%Y')) = YEAR(CURRENT_DATE()) AND STR_TO_DATE(prazoobra,'%d/%m/%Y') < CURRENT_DATE() GROUP BY eps) UNION (SELECT eps, count(*) as total_prazo FROM controle WHERE status IN('EXECUÇÃO', 'EXECUCAO') AND YEAR(STR_TO_DATE(prazoobra,'%d/%m/%Y')) = YEAR(CURRENT_DATE()) AND STR_TO_DATE(prazoobra,'%d/%m/%Y') > CURRENT_DATE() GROUP BY eps) "; $PDO = db_connect(); $stmt = $PDO->query($sql); $data = $stmt->fetchAll(PDO::FETCH_ASSOC); $chartData = "['EPS', 'Prazo', 'fora'],"; foreach ($data as $_data) { $chartData .= sprintf("['%s', %d, %d],", $_data['eps'], $_data['total_atrasadas'], $_data['total_prazo']); } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Gráfico</title> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1.1", {packages:["bar"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ <?php echo $chartData ?> ]); var options = { chart: { title: 'Demanda de Obras ', subtitle: 'Por Fiscal', } }; var chart = new google.charts.Bar(document.getElementById('chart')); chart.draw(data, options); } </script> </head> <body> <div id="chart" style="width: 850px; height: 450px;"></div> </body> </html> Eu consigo realizar a consulta, mas não aparece no gráfico. A única diferença de uma consulta para a outra é STR_TO_DATE(prazoobra,'%d/%m/%Y') < CURRENT_DATE() STR_TO_DATE(prazoobra,'%d/%m/%Y') > CURRENT_DATE() Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 2, 2015 Então, com o OR não deu certo ? Outra opção seria: $sql = "SELECT eps, count(*) as total_atrasadas FROM controle WHERE status IN('EXECUÇÃO', 'EXECUCAO') AND YEAR(STR_TO_DATE(prazoobra,'%d/%m/%Y')) = YEAR(CURRENT_DATE()) AND ( STR_TO_DATE(prazoobra,'%d/%m/%Y') <> CURRENT_DATE() ) GROUP BY eps";entendeu ? mais direto do que fazer o < e >, fazer o diferente logo. Compartilhar este post Link para o post Compartilhar em outros sites
Vanderlan 2 Denunciar post Postado Outubro 2, 2015 Entendi, Mas o que quero é algo parecido com isso: $sql = "SELECT fiscal, COUNT(CASE status WHEN 'ENERGIZADA' THEN 1 END) AS energizada, COUNT(CASE status WHEN 'EXECUCAO' THEN 1 END) AS execucao FROM " . TABLE_NAME . " GROUP BY fiscal"; Para que eu possa associar usando os: AS energizada, AS execucao Compartilhar este post Link para o post Compartilhar em outros sites