Как обратится к полю в родительской/связанной таблице
#41
Отправлено 22 Май 2015 - 16:33
У меня тоже возник вопрос по суммированию по связанной таблице. Пробовал настроить вот по этому мануалу http://clientbase.ru...ps/calculation/ и по примерам в данной теме, но то не работает, то выдает ошибку.
Если делать по примеру из темы пишет:
Ошибка системы.
Error generated:
C:\Program Files (x86)\MSTL\ClientBase\www\include\functions1.php(484) : data_update()
C:\Program Files (x86)\MSTL\ClientBase\www\include\functions1.php(550) : form_event_recurs()
C:\Program Files (x86)\MSTL\ClientBase\www\view_line2.php(2642) : calc_line()
Ошибка SQL запроса:
UPDATE f_data220 SET Номер прихода='Array' WHERE id=22
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'прихода='Array' WHERE id=22' at line 1
Если делать по примеру из первой ссылки, то показывает сумму только последней внесенной записи или вообще не показывает.
Как все таки правильно настраивать это суммирование?
#42
Отправлено 22 Май 2015 - 16:53
#43
Отправлено 02 Июнь 2015 - 09:35
$sqlQuery = "SELECT sum(f1680) as summa FROM ".DATA_TABLE."220 WHERE status=0 AND f1620='".$line['Номер прихода']['ID']."'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$summa = $row['summa'];
$line['Номер прихода']['Сумма'] = $summa ;
#44
Отправлено 02 Июнь 2015 - 11:15
#45
Отправлено 24 Июнь 2015 - 14:10
easysoftware (02 Июнь 2015 - 09:35) писал:
$sqlQuery = "SELECT sum(f1680) as summa FROM ".DATA_TABLE."220 WHERE status=0 AND f1620='".$line['Номер прихода']['ID']."'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$summa = $row['summa'];
$line['Номер прихода']['Сумма'] = $summa ;
Я тоже долго мучился, пока не поменял sql_query на mysql_query и sql_fetch_array на mysql_fetch_array
Ура, заработало!
Админы прошу исправить это в примерах:
http://clientbase.ru...6/calculations/
http://clientbase.ru...ps/calculation/
А то ведь голову сломать можно, думая, что не работает
#46
Отправлено 24 Июнь 2015 - 14:25
Цитата
Вы где использовали то этот пример? В вычислениях или в каком-то своем внешнем скрипте? Данный пример (как и большинство других в документации) сугубо для вычислений или иного кода внутри программы, где использование нативных функций mysql_query и mysql_fetch_array настоятельно не рекомендуется, притом что КБ-функции sql_query и sql_fetch_array должны работать абсолютно нормально.
#47
Отправлено 24 Июнь 2015 - 15:19
CbCoder (24 Июнь 2015 - 14:25) писал:
Сейчас попробовал sql_query и sql_fetch_array написать - тоже работает.
А вот если как в примере, где встречается и sql_query и mysql_fetch_assoc - там начинает некорректно считать
Цитата
$pre = sql_query($sqlQ) or die(mysql_error());
$row = mysql_fetch_assoc($pre);
if ($row['sum']===NULL)
{ $line['Номер']['Сумма']=0;
}
else
{
$line['Номер']['Сумма']=$row['sum'];
}
#48
Отправлено 24 Июнь 2015 - 15:37
Цитата
Вот насчет этого полностью согласен - мешать эти два разных вида функций нельзя, вместе они могут не работать или работать некорректно. Возможно это были примеры для старых версий 1.х, проверим.
#50
Отправлено 09 Июль 2015 - 17:25
CbCoder (02 Июнь 2015 - 11:15) писал:
Поле номер прихода есть в таблице, в которой расположено вычисление https://yadi.sk/i/HI7OaE8ThmTds
С откорректированным кодом по ссылке заработало. Сейчас код такой.
$result = sql_query("SELECT SUM(f1680) AS sum FROM ".DATA_TABLE."220 WHERE f1620=".$line['Номер прихода']['raw']." and status=0 and id!=".$ID);
$row = sql_fetch_assoc($result);
$line['Номер прихода']['Сумма'] = $row['sum'] + $line['Сумма'];
Но, если удаляешь запись из подтаблицы, сумма не меняется. Подскажите, пожалуйста, как правильно прописать, чтобы при удалении сумма изменялась?
Сообщение отредактировал easysoftware: 09 Июль 2015 - 17:33
#51
Отправлено 10 Июль 2015 - 09:28
#52
Отправлено 13 Июль 2015 - 14:57
Например, нужно подсчитать общую сумму заказов клиента и отобразить ее в карточке клиента, или количество товара, которое было продано за весь период, и отобразить в карточке товара.
Как такие вычисления делать?
Сообщение отредактировал easysoftware: 13 Июль 2015 - 14:59
#53
Отправлено 14 Июль 2015 - 09:11
Цитата
Что значит "общие данные"? Таблицы бывают либо связаны (через поля связи), либо нет. В этом плане любая связанная таблица абсолютно ничем не отличается от подтаблиц. Соответственно и вычисления для них полностью аналогичны. В вашем примере таблица заказов связана с таблицей клиентов через поле связи с ней, точно также как если бы она была к примеру подтаблицей внутри клиентов.
#54
Отправлено 16 Июль 2015 - 19:29
В случае с подтаблицей, мы прописываем вычисление в подтаблице, в случае если таблицы связаны по полю Название, то в какой таблице прописывать вычисление?
Например, есть таблица Товары (id 10) в ней поле Название (id 50) .Поле Поступило (id 1700) В поле Поступило нам нужно получить кол-во товаров, которые поступили за весь период
Товары мы выбираем в таблице Поступившие товары (Id 220) по полю Название (Id 1630), т.е. по этому полю таблицы связаны. Также есть поле Кол-во (id 1670), по которому и нужно получить сумму
По аналогии с формулой с подтаблицами прописываю так
$result = sql_query("SELECT SUM(f1700) AS sum FROM ".DATA_TABLE."220 WHERE f1670=".$line['Название']['raw']." and status=0 and id!=".$ID);
$row = sql_fetch_assoc($result);
$line['Название']['Поступило'] = $row['sum'] + $line['Поступило'];
Но выдает ошибку
Ошибка в вычислении.
Товары.Пришло :
1: $result = sql_query("SELECT SUM(f1700) AS sum FROM ".DATA_TABLE."220 WHERE f1670=".$line['Название']['raw']." and status=0 and id!=".$ID);
2: $row = sql_fetch_assoc($result);
Ошибка SQL запроса:
SELECT SUM(f1700) AS sum FROM f_data220 WHERE f1670= and status=0 and id!=1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and status=0 and id!=1' at line 1
Как правильно прописать формулу в таком случае?
#55
Отправлено 20 Июль 2015 - 11:02
Цитата
В этом случае аналогом подтаблицы является таблица, в которой находится поле связи. Например, если в Счетах есть поле связи "На кого" с таблицей Контрагенты, то она является как бы "подтаблицей" таблицы Контрагенты (если сделать ее реальной подтаблицей, зайдя в контрагента мы увидим все его счета). Следовательно, если я например хочу получить сумму по всем счетам контрагента, то вычисление должно находится в Счетах и запрос в этом вычислении должен использовать поле связи с контрагентом "На кого". Очевидно, вы что-то сделали не так, например вычисление не в той таблице или в запросе не то поле связи. По крайней мере ошибка связана именно с неверным полем - в $line['Название']['raw'] пустота, хотя ее там быть не должно.
#56
Отправлено 21 Июль 2015 - 22:21
Ошибка в вычислении.
Поступившие товары. :
1: $result = sql_query("SELECT SUM(f1670) AS sum FROM ".DATA_TABLE."220 WHERE f1630=".$line['f1630']['raw']." and status=0 and id!=".$ID);
2: $row = sql_fetch_assoc($result);
Ошибка SQL запроса:
SELECT SUM(f1670) AS sum FROM f_data220 WHERE f1630= and status=0 and id!=38
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and status=0 and id!=38' at line 1
Подскажите, пожалуйста, в чем ошибка. Вроде бы делаю все правильно
Вот таблица, в которой должна быть сумма https://yadi.sk/i/jolOQeQRhztsm
Вот таблица, откуда суммируем https://yadi.sk/i/7NvOxtJVhztmu
Формула такая:
$result = sql_query("SELECT SUM(f1670) AS sum FROM ".DATA_TABLE."220 WHERE f1630=".$line['Название']['raw']." and status=0 and id!=".$ID);
$row = sql_fetch_assoc($result);
$line['Название']['Поступило'] = $row['sum'] + $line['Кол-во'];
Ошибка, насколько я понимаю, здесь f1630=".$line['Название']['raw']." and status=0 and id!=".$ID); или здесь $line['Название']['Поступило'] = $row['sum'] + $line['Кол-во'];
В первом случае Название к какой из таблиц должно относится: к "подтаблице" или к главной? И во втором верно ли поля указаны?
#57
Отправлено 22 Июль 2015 - 10:17
Цитата
В переменной $line содержатся только поля текущей таблицы (к которой относится вычисление), поэтому в любом случае $line['Название'] - это поле "подтаблицы".
#58
Отправлено 02 Август 2015 - 01:39
Еще вот какая штука возникает. Добавляю в подтаблицу данные - подставляются единицы и двойкии (похоже, что номер записи) хотя настроено, чтобы подставлялись данные из другой таблицы. А после обновления все нормально. И суммой как-то странно. На видео видно, в чем проблема Подскажите, пожалуйста, в чем дело.
#59
Отправлено 06 Август 2015 - 15:39
Неправильно считает сумму при суммировании по связанной таблице. Откуда-то появляется непонятная 1. https://yadi.sk/i/2ExMD3s-iJctH
Есть 2 прихода всего по этому товару в количестве 10 и 50 единиц, а показывает 61
Формула такая:
$result = sql_query("SELECT SUM(f1670) AS sum FROM ".DATA_TABLE."220 WHERE f1630=".$line['Название']['ID']." and status=0 and id!=".$ID);
$row = sql_fetch_assoc($result);
$line['Название']['Поступило'] = $row['sum'] + $line['Кол-во'];
В ней что-то не так?
Количество пользователей, читающих эту тему: 8
0 пользователей, 8 гостей, 0 анонимных