2015-03-10 4 views
0

У меня есть массив, содержащая три записи:MySQL выбор массива и сумма значений

value  datetime 
2  03/03/2015 14:34:00 
4  03/03/2015 14:36:00 
5  03/03/2015 13:34:00 

Я хочу, чтобы выбрать записи, которые по времени 14 и просуммировать их. В приведенном выше примере будет 4 + 2 = 6

Как это сделать?

$sql ="SELECT amperagem, data FROM tomada WHERE date(data) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)";// 
mysql_select_db('localiza'); 
$retval = mysql_query($sql, $conn); 
$num_rows = mysql_num_rows($retval); 
while($row = mysql_fetch_array($retval, MYSQL_BOTH)){  
$hour= substr(($row['data']),11, 2); 
+0

Как выглядит ваше определение таблицы? хотите ли вы суммировать все значения в определенный час, независимо от дня (даты)? Я имею в виду, что время 14: xx: xx может происходить в вашей таблице много раз в разные дни в течение всего года. – MrSimpleMind

ответ

0

Вы действительно можете получить себе значение с помощью одного запроса SQL:

Не забудьте прочитать на http://www.w3schools.com/sql/func_datepart.asp

Таким образом, чтобы получить все записи с DateTime, содержащий 14: XX: XX

Теперь просто получить строки, как вы делали и получить «значение» для каждой строки и добавить их

$res = mysql_query($sql, $conn); 
$returnObjects = array(); 
     if ($res == null) { 
      return $returnObjects;  
     }  
     while(!is_null($row = mysql_fetch_row($res))){ 
      $returnObjects[] = $row; 
     } 
$returnArray = mysql_fetch_array($returnObjects); 
$sum = 0; 
for($row = 0, $size = count($returnArray); $row < $size; $row++){ 
     $sum += $returnArray[$row][0]; //Note 0 is the value you need 
} 
return $sum; 

Обратите внимание, что это может быть сделано в меньших количествах кодов с меньшим количеством шагов, но я считаю, что это помогает читать то, что я делаю. Также рекомендуются некоторые дополнительные проверки, если определенные объекты имеют значение NULL или значения являются недопустимыми.

+0

Я пробовал эту строку: –

+0

Я пробовал эту строку: –

+0

Datepart - это команда SQL Server, не работает в Mysql –

0

SQL, так же просто, как:

выберите сумму (значение) из Tomada, где час (DateTime) = 14;

Смежные вопросы