Pedro12345 Posted September 25, 2013 at 11:05 AM Report #525885 Posted September 25, 2013 at 11:05 AM Olá a todos os utilizadores!! Estou a ter algumas dificuldades em colocar numa tabela a duplicação de valores de temperaturas minimas e máximas! Estou a utilizar basicamente 3 colunas para ir buscar os valores que pretendo. Uma coluna possui a Data, outra a Hora e outra as Temperaturas.. Estou a utilizar o seguinte código: <table align="center" border=1 borderColor="grey" cellspacing="0"> <tr> <th width="100" height="40" scope="col" bgColor="#000080"> <font color='white'>Valores registados</th> <th width="250" height="40" scope="col" bgColor="#000080"> <font color='white'>Média da Temperatura</th> <th width="250" height="40" scope="col" bgColor="#000080"> <font color='white'>Temperatura mínima registada</th> <th width="250" height="40"scope="col" bgColor="#000080"> <font color='white'>Temperatura máxima registada</th> </tr> <?php include('config.php'); $query = mysql_query("select * from dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'"); $linhas = mysql_num_rows($query); //conta numero de linhas $query0 = "SELECT data, AVG(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'"; $result0 = mysql_query($query0) or die(mysql_error()); $query1 = "SELECT data, MIN(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'"; $result1 = mysql_query($query1) or die(mysql_error()); $query2 = "SELECT data, MAX(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'"; $result2 = mysql_query($query2) or die(mysql_error()); $Query12 = mysql_query("SELECT MAX(tempc) AS max_temp FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'")or die(mysql_error()); $exibir12 = mysql_fetch_assoc($Query12); // Serve para capturar os valores obtidos da consulta Sql '$Query'' if($linhas==0) { echo "<tr><tr align=center><td align=center colspan=7><font color='blue' face=Arial, Helvetica, sans-serif><h4><br>Não existem dados inseridos!</font><img src='stop.png' width='25' height='25'><br><br></td><td></tr>"; } echo "<td align=center><b><font color='Gold2'> $linhas</td>"; if($row = mysql_fetch_array($result0)){ echo "<td align=center><b><font color='Gold2'> " .round($row['AVG(tempc)'],1). " <i>ºC"; } if($row1 = mysql_fetch_array($result1)){ echo "<td align=center><font color='black'>" .$row1['data']. " <font color='#CD950C'><b> " .round($row1['MIN(tempc)'],1). " <i>ºC"; } if($row2 = mysql_fetch_array($result2)){ echo "<td align=center><font color='black'>" .$row2['data']. " <font color='#CD2626'><b> " .round($exibir12['max_temp'],1). " <i>ºC </i></td>"; } ?> O Aspecto da tabela criada e os dados nela colocados, como um exemplo de intervalo de 15 minutos num periodo das 00:00:00 às 00:30:00 é a seguinte: http://img41.imageshack.us/img41/6104/tfl7.png A minha dificuldade é a seguinte: Caso existisse na tabela, no intervalo selecionado a mesma temperatura minima, gostaria que dentro da coluna de Temperatura Minima Registada, mostrasse, como lá está, a data, hora em que ocorreram. Ou seja, se entre o intervalo 00:00:00 e o 00:30:00 tiver os valores de temperatura 19.4, 19.4 e 27.1 respetivamente, gostaria que aparecesse nessa coluna desta forma: 2013-09-18 00:00:00 19ºC 2013-09-18 00:00:15 19ºC ... Ou seja, que mostrasse as datas e horas que tiveram a mesma temperatura mínima!! (que posteriormente seria aplicado às temperaturas máximas) Grato se me puderem ajudar!!! Um abraço, Pedro
Pedro12345 Posted September 25, 2013 at 10:09 PM Author Report #526013 Posted September 25, 2013 at 10:09 PM Será que terei de fazer algum Select Count(Min(tempc)) para contar o número de vezes que aparece a temperatura minima? Outra forma que estou a pensar agora seria em guardar numa varíavel a temperatura mínima, depois percorria as linhas todas, e imprimia em todas elas as temperaturas iguais à temperatura minima.. acham que resultaria também dessa forma?
Virneto Posted September 25, 2013 at 11:10 PM Report #526017 Posted September 25, 2013 at 11:10 PM Porque não um SELECT COUNT(tempc) FROM dados WHERE tempc= [minima]; ou então um SELECT aninhado. Pesquisa por Nested SELECT: assim de cor... SELECT COUNT(*) from ( SELECT data,MIN(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim') AS frequencia; calculo que a primeira query seja mais rápida. Espero ter ajudado. "Que inquieto desejo vos tortura, Seres elementares, força obscura? Em volta de que ideia gravitais?" >> Anthero de Quental - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Linuxando.com | ...
Pedro12345 Posted September 26, 2013 at 11:03 PM Author Report #526209 Posted September 26, 2013 at 11:03 PM Porque não um SELECT COUNT(tempc) FROM dados WHERE tempc= [minima]; ou então um SELECT aninhado. Pesquisa por Nested SELECT: assim de cor... SELECT COUNT(*) from ( SELECT data,MIN(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim') AS frequencia; calculo que a primeira query seja mais rápida. Espero ter ajudado. Não consegui implementar dessa forma, fiz assim: $sql1="SELECT * FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim' "; $query1=mysql_query($sql1) or die ("Nao seleccionou tabela!"); $linhas=mysql_num_rows($query1); $sql2="SELECT MIN(tempc) AS minima FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim' "; $query2=mysql_query($sql2) or die ("Nao seleccionou tabela!"); $minima = mysql_fetch_assoc($query2); for($i=0;$i<$linhas;$i++) { $data=mysql_result($query1,$i,'data'); $hora=mysql_result($query1,$i,'hora'); $tempc=mysql_result($query1,$i,'tempc'); $sit=mysql_result($query1,$i,'sit'); $tempf=mysql_result($query1,$i,'tempf'); if(round($minima['minima'],1) == $tempc){ echo "<tr><td align=center><font color='black'> $data</td>"; echo "<td align=center><font color='black'> $hora</td>"; echo "<td align=center><b><font color='red'> $tempc</td>"; echo "<td align=center><font color='black'> $sit</td>"; echo "<td align=center><font color='black'> $tempf</td></tr></table"; } } Fiz desta forma e está a funcionar corretamente!! 😉 Obrigado!!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now