Страница 1 из 1
Запрос в базу не отображает ответ
Добавлено: 09 янв 2025, 01:29
SalahievFR
Пытаюсь посчитать поступление для конкретного товара.
Если напрямую в базе делать запрос, то я получаю ответ. В системе через php даже 0 нет.
Может кто разбирается ?
Код: Выделить всё
$product_id = [id];
$info_query = db_query("SELECT SUM(p.field_372) AS total_incoming FROM app_entity_40 p JOIN app_entity_38 a ON p.parent_item_id = a.id WHERE p.field_371 = {$product_id} AND a.field_340 = 88");
$info = db_fetch_assoc($info_query);
if ($info) {
$total_incoming = $info['total_incoming']; // Поступления (закупки)
// Выводим или используем данные
$output_value = $total_incoming;
} else {
// Если данных нет
$output_value = 0;
}
Re: Запрос в базу не отображает ответ
Добавлено: 09 янв 2025, 10:23
Fait
SalahievFR писал(а): 09 янв 2025, 01:29
Пытаюсь посчитать поступление для конкретного товара.
Если напрямую в базе делать запрос, то я получаю ответ. В системе через php даже 0 нет.
Может кто разбирается ?
Код: Выделить всё
$product_id = [id];
$info_query = db_query("SELECT SUM(p.field_372) AS total_incoming FROM app_entity_40 p JOIN app_entity_38 a ON p.parent_item_id = a.id WHERE p.field_371 = {$product_id} AND a.field_340 = 88");
$info = db_fetch_assoc($info_query);
if ($info) {
$total_incoming = $info['total_incoming']; // Поступления (закупки)
// Выводим или используем данные
$output_value = $total_incoming;
} else {
// Если данных нет
$output_value = 0;
}
Конечно, не работает...
Вот так попробуйте:
Код: Выделить всё
$product_id = [id];
$info_query = db_query("select sum(p.field_372) as total_incoming from app_entity_40 p join app_entity_38 a on p.parent_item_id=a.id where p.field_371=".$product_id." and a.field_340=88");
$info = db_fetch_array($info_query); // Не надо использовать db_fetch_assoc
if ($info) {
$total_incoming = $info['total_incoming']; // Поступления (закупки)
// Выводим или используем данные
$output_value = $total_incoming;
} else {
// Если данных нет
$output_value = 0;
}
А вообще, запрос какой-то мудрёный, мне кажется, можно без JOIN обойтись спокойно.
Попробуйте этот вариант запроса:
Код: Выделить всё
select sum(field_372) as total_incoming from app_entity_40 where field_371=".$product_id." and parent_item_id in (select id from app_entity_38 where field_340=88)
Re: Запрос в базу не отображает ответ
Добавлено: 09 янв 2025, 14:09
SalahievFR
Спасибо огромное, оба варианты показывают верные результаты.
Re: Запрос в базу не отображает ответ
Добавлено: 10 янв 2025, 14:12
SalahievFR
Fait писал(а): 09 янв 2025, 10:23
SalahievFR писал(а): 09 янв 2025, 01:29
Пытаюсь посчитать поступление для конкретного товара.
Если напрямую в базе делать запрос, то я получаю ответ. В системе через php даже 0 нет.
Может кто разбирается ?
Код: Выделить всё
$product_id = [id];
$info_query = db_query("SELECT SUM(p.field_372) AS total_incoming FROM app_entity_40 p JOIN app_entity_38 a ON p.parent_item_id = a.id WHERE p.field_371 = {$product_id} AND a.field_340 = 88");
$info = db_fetch_assoc($info_query);
if ($info) {
$total_incoming = $info['total_incoming']; // Поступления (закупки)
// Выводим или используем данные
$output_value = $total_incoming;
} else {
// Если данных нет
$output_value = 0;
}
Конечно, не работает...
Вот так попробуйте:
Код: Выделить всё
$product_id = [id];
$info_query = db_query("select sum(p.field_372) as total_incoming from app_entity_40 p join app_entity_38 a on p.parent_item_id=a.id where p.field_371=".$product_id." and a.field_340=88");
$info = db_fetch_array($info_query); // Не надо использовать db_fetch_assoc
if ($info) {
$total_incoming = $info['total_incoming']; // Поступления (закупки)
// Выводим или используем данные
$output_value = $total_incoming;
} else {
// Если данных нет
$output_value = 0;
}
А вообще, запрос какой-то мудрёный, мне кажется, можно без JOIN обойтись спокойно.
Попробуйте этот вариант запроса:
Код: Выделить всё
select sum(field_372) as total_incoming from app_entity_40 where field_371=".$product_id." and parent_item_id in (select id from app_entity_38 where field_340=88)
Написал такой код. Посмотрите, пожалуйста, можно ли улучшить (ускорить или упростить) запрос и подсчет остатков. Тут я в одном запросе получаю закуп и расход. А потом в php делаю вычисления и проверки.
Код: Выделить всё
$product_id = [id];
// Запрос для получения сумм поступлений и расходов
$query = "
SELECT
(SELECT SUM(field_372) FROM app_entity_40
WHERE field_371 = {$product_id} AND parent_item_id IN
(SELECT id FROM app_entity_38 WHERE field_340 = 88)) AS total_incoming,
(SELECT SUM(field_372) FROM app_entity_40
WHERE field_371 = {$product_id} AND parent_item_id IN
(SELECT id FROM app_entity_38 WHERE field_340 = 89)) AS total_outgoing
";
$result = db_query($query);
$info = db_fetch_array($result);
if ($info) {
$total_incoming = $info['total_incoming'] ?? 0; // Поступления (закупки)
$total_outgoing = $info['total_outgoing'] ?? 0; // Расходы
$remaining = $total_incoming - $total_outgoing; // Остаток
$output_value = $remaining;
} else {
$output_value = 0; // Нет данных
}
Re: Запрос в базу не отображает ответ
Добавлено: 10 янв 2025, 16:54
Fait
Думаю, хорошо получилось, быстрее наверное некуда уже)
Re: Запрос в базу не отображает ответ
Добавлено: 11 янв 2025, 01:44
SalahievFR
Fait писал(а): 10 янв 2025, 16:54
Думаю, хорошо получилось, быстрее наверное некуда уже)
Спасибо за ответ.)