Сложный запрос MYSQL в 5 миллионов строк и ошибок с 1317 [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Сложный запрос MYSQL в 5 миллионов строк и ошибок с 1317 [закрыто]

Сообщение Anonymous »

У меня есть таблица с 5 миллионами строк.
Пример

Код: Выделить всё

+----+-----------+---------+-------
|  product    | date       |  count    |
+-------------+------------+-----------+
|  платье     | 04-01-2024 | 186574    |
|  штаны      | 04-01-2024 | 20564     |
|  кепка      | 07-01-2024 | 104443    |
|  штаны      | 06-01-2024 | 10574     |
|  платье     | 06-01-2024 | 223001    |
+-------------+------------+-----------+
Мне нужно выбрать строки с двумя пользовательскими датами, затем, если имя продукта1 = имя2, получить разницу между количеством и затем получить топ-100 по этой разнице.
теперь я создаю 2 выбора, а затем просматриваю массив, чтобы получить его. но у меня ошибка по памяти. Как я могу создать 1 запрос в MySQL?
мой запрос

Код: Выделить всё

    $get_ex = $connection->prepare("SELECT * FROM product WHERE date = :date");
$get_ex->execute(array(':date' => $first_date));
$ex_list_2 = $get_ex->fetchAll(PDO::FETCH_ASSOC);

$get_ex_3 = $connection->prepare("SELECT * FROM product WHERE date = :date");
$get_ex_3->execute(array(':date' => $second_date));
$ex_list_3 = $get_ex_3->fetchAll(PDO::FETCH_ASSOC);

$result = Array();
$i=0;
foreach($ex_list_2 as $key => $value)
{
foreach($ex_list_3 as $key2 => $value2)
{
if($value['product_name'] == $value2['product_name'])
{
$result[$i]['product_name'] = $value['product_name'];
$result[$i]['count_1'] = $value['count'];
$result[$i]['count_2'] = $value2['count'];
$result[$i]['res'] = $value['count']- $value2['count'];
$i++;
}
}

}
и результат -
Неустранимая ошибка: разрешенный размер памяти 1073741824 байт исчерпан
memory_limit = 2048 МБ< /p>
для результата мне нужен массив со следующей информацией

Код: Выделить всё

+-------------+-------------+-------------+-----------+
|  product    | 04-01-2024  |  06-01-2024 |  diff     |
+-------------+-------------+-------------+-----------+
|  платье     | 186574      | 223001      | 36427     |
|  штаны      | 20564       | 10574       | 99000     |
+-------------+-------------+-------------+-----------+
не работает порядок и есть ошибка 1317 в MySQL

Подробнее здесь: https://stackoverflow.com/questions/777 ... -with-1317
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»