ВЫБЕРИТЕ МАКСИМАЛЬНЫЙ интервал выдачи запроса

#php #mysql #sql

Вопрос:

Я хочу получить наибольшее значение за последний 1 день, но запрос не работает. (столбцы даты / времени, отформатированные по дате). Данные, которые я хочу запросить, находятся в нескольких заголовках.

 SELECT sign, date, price, MAX(price) as maxp FROM table WHERE datetime >= NOW() - INTERVAL 1 DAY
 

мой полный запрос;

 $que = $conn->mysql_query("SELECT sign, date, MAX(price) as maxp FROM table WHERE date >= (NOW() - INTERVAL 1 DAY) group by sign, date"); 

$row = mysql_fetch_array($que); { 

?>

<?php
foreach ($que as $row) {
$newQuery = "UPDATE tableb SET `daymax`='".$row["maxp"]."' where `sign`='".$row["sign"]."' ";
mysqli_multi_query($conn, $newQuery)

?>
 

Комментарии:

1. в чем заключается ошибка?

2. @Chakri «запрос пуст». но не пусто.

3. И вы не можете смешивать и сопоставлять API. Выбросьте устаревший (mysql_)

Ответ №1:

Если вы хотите подписать,дата,максимальная цена, которую вам нужно сгруппировать по знаку, дате. Попробуй это.

 SELECT sign, date, MAX(price) as maxp 
FROM table WHERE datetime >= NOW() - INTERVAL 1 DAY
group by sign,date
 

Комментарии:

1. «запрос пуст» . Я добавил свой полный запрос. Во всем запросе может быть проблема

2. Пожалуйста, поделитесь полным запросом со структурами таблиц.

3. ПОЖАЛУЙСТА, ПРОВЕРЬТЕ, ЕСТЬ ЛИ У ВАС ДАННЫЕ В ЭТОМ ДИАПАЗОНЕ ДАТ.

Ответ №2:

Вы можете сделать это все за один запрос:

 update tableb b join
       (selecct sign, MAX(price) as maxp 
        from table t
        where datetime >= NOW() - INTERVAL 1 DAY
        group by sign
       ) tt
       on b.sign = tt.sign
    set b.daymax = tt.maxp;
 

Пусть база данных сделает свою работу! Нет причин выполнять циклическое выполнение в приложении, когда вы можете сделать это в базе данных.

Обратите внимание, что это now() имеет временную составляющую. Вы работаете с датами, так что, возможно, вам действительно захочется curdate() вместо этого.