

Сумма значений в подчиненной
Автор ber, 05 нояб. 2013 08:42
Сообщений в теме: 8
#1
Отправлено 05 Ноябрь 2013 - 08:42
Как написать вычисление, при котором будут суммироваться значения из строк всех связанных записей в подчиненной таблице и выводиться в строке основной?
www.its-truck.ru - Группа компаний ИТС
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
#2
Отправлено 05 Ноябрь 2013 - 09:16
Запрос к подчиненной таблице с условием "поле связи с родительской равно id текущей родительской записи", затем либо использование агрегатной функции sum, либо просто проход по всем записям с суммированием. В документации должны быть примеры.
#3
Отправлено 05 Ноябрь 2013 - 10:11
По факту это нужно, что бы просчитать количество записей в подчиненной таблице со связью с основной
Вот такой код, но всегда считает цифру 1, почему?
Вот такой код, но всегда считает цифру 1, почему?
$znachenID=$line['Компания']; //получаем количество значений //поле 1175 - содержит связь с основной таблицей, соответственно ниже мы считаем сколько раз повторено такое же значение в этом поле $sqlQuery = "SELECT count(`f1175`) AS cnt FROM `".DATA_TABLE."92` WHERE (`status`<>'2' AND `f1175`='" . $znachenID . "')"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); $row = mysql_fetch_assoc($result); //в итоге в вот здесь $row['cnt'] будет находится количество записей в связанной таблице //можно записать в какое-то поле основной таблицы $line['Компания']['Кол-во записей']=$row['cnt'];
www.its-truck.ru - Группа компаний ИТС
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
#4
Отправлено 05 Ноябрь 2013 - 10:14
Отбой, сработало, нашел ошибку
$znachenID=$line['Компания']['ID']; //получаем количество значений с таким же значением какое занесли //поле 1175 - содержит связь с основной таблицей, соответственно ниже мы считаем сколько раз повторено такое же значение в этом поле $sqlQuery = "SELECT count(`f1175`) AS cnt FROM `".DATA_TABLE."92` WHERE (`status`<>'2' AND `f1175`='" . $znachenID . "')"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); $row = mysql_fetch_assoc($result); //в итоге в вот здесь $row['cnt'] будет находится количество записей в связанной таблице //можно записать в какое-то поле основной таблицы $line['Компания']['Кол-во записей']=$row['cnt'];
www.its-truck.ru - Группа компаний ИТС
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
#5
Отправлено 05 Ноябрь 2013 - 12:39
Как добавить еще одно условие к подчиненной записи, число которых надо?
Так правильно?
$znachenID=$line['Компания']['ID']; //получаем количество значений с таким же значением какое занесли //поле 1175 - содержит связь с основной таблицей, соответственно ниже мы считаем сколько раз повторено такое же значение в этом поле $sqlQuery = "SELECT count(`f1175`) AS cnt FROM `".DATA_TABLE."92` WHERE (`status`<>'2' AND `f1175`='" . $znachenID . "' AND `fXXXX`='Продан')"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); $row = mysql_fetch_assoc($result); //в итоге в вот здесь $row['cnt'] будет находится количество записей в связанной таблице //можно записать в какое-то поле основной таблицы $line['Компания']['Кол-во записей']=$row['cnt'];
Так правильно?
Сообщение отредактировал ber: 05 Ноябрь 2013 - 12:41
www.its-truck.ru - Группа компаний ИТС
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
#6
Отправлено 05 Ноябрь 2013 - 13:28
Да. Не работает что ли?
#7
Отправлено 05 Ноябрь 2013 - 15:02
Да, работает

www.its-truck.ru - Группа компаний ИТС
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
#8
Отправлено 05 Ноябрь 2013 - 17:53
Просчет при удалении записи (той, в которой стоит вычисление) почему-то работает некорректно, после удаления первой записи строка в связанной таблице $line['Компания']['Кол-во записей'] не претерпевает изменений. После удаления второй снижается на 1. После удаления всех записей в поле $line['Компания']['Кол-во записей'] остается цифра 1.
Далее если опять добавляем запись цифра 1 в строке $line['Компания']['Кол-во записей'] не изменяется на 2, после добавления второй меняется на 2.
Используемый код:
В чем проблема?
Далее если опять добавляем запись цифра 1 в строке $line['Компания']['Кол-во записей'] не изменяется на 2, после добавления второй меняется на 2.
Используемый код:
$znachenID=$line['Компания']['ID']; //получаем количество значений с таким же значением какое занесли //поле 1175 - содержит связь с основной таблицей, соответственно ниже мы считаем сколько раз повторено такое же значение в этом поле $sqlQuery = "SELECT count(`f1175`) AS cnt FROM `".DATA_TABLE."92` WHERE (`status`<>'2' AND `f1175`='" . $znachenID . "')"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); $row = mysql_fetch_assoc($result); //в итоге в вот здесь $row['cnt'] будет находится количество записей в связанной таблице //можно записать в какое-то поле основной таблицы $line['Компания']['Кол-во записей']=$row['cnt'];
В чем проблема?
Сообщение отредактировал ber: 05 Ноябрь 2013 - 17:56
www.its-truck.ru - Группа компаний ИТС
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
www.intertransservice.ru - ИТС-МАН - Официальный дилер MAN Truck and Bus
www.its-daf.ru - ИТС-ДАФ - Официальный дилер DAF Trucks
www.its-hino.ru - ИТС-Хино - Официальный дилер Hino Motors
www.its-kamaz.ru - ИТС-Камаз - Официальный дилер ПАО КамАЗ
www.trp-parts.ru - Интернет-магазин запасных частей для грузовых авто
#9
Отправлено 05 Ноябрь 2013 - 18:00
Вычисление при удалении записи срабатывает ДО собственно удаления записи, с тем чтобы при необходимости это удаление отменить (см. документацию), поэтому при любых запросах эта запись будет оставаться активной. Вы должны самостоятельно исключать ее из расчета.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных