Уважаемые Разработчики!
Помогите, пожалуйста, реализовать функциональность:
1. Есть таблица Счета, поля Номер, Сумма, Оплачено
2. Есть таблица Оплаты, поля Дата, Номер счета, Сумма
Проставляем оплаты в таблицу Оплаты. Значения поля Номер счета могут повторяться, поскольку по одному счету может быть несколько оплат.
Задача - сделать так, чтобы в поле Оплачено таблицы Счета отражалась сумма оплат по данному номеру счета.
Бьюсь три дня.
С уважением,
Дмитрий
1
Сумма выборки
Автор dimichspb, 01 февр. 2010 13:57
Сообщений в теме: 3
#1
Отправлено 01 Февраль 2010 - 13:57
#2
Отправлено 02 Февраль 2010 - 10:49
Через упрощенную функциональность (зная только имена таблиц и полей) вы это не реализуете на данный момент, здесь необходимо знать структуру базы данных, в частности как задавать таблицы и поля (физически в базе они хранятся под номерами, а не под "русскими" именами). Например, таблица Счета в стандартной конфинурации имеет номер 43, поле Сумма в той же таблице - номер 454. Их истинные имена выглядят как <prefix>data43 и f454 соответсвенно, где <prefix> - текущий префикс таблиц. Таким образом запрос на выборку данных из поля Сумма текущей строки таблицы Cчета будет выглядеть так:
Для вашей задачи получаем следущий код:
В целях упрощения работы с вычисляемыми полями (чтобы не запутаться в этих всех номерах), нами была написана функция data_table, которая работает напрямую с русскими именами, но она пока не не позволяет делать сложные запросы, в частности вычисление групповых функций sql, как в вашем примере. Упрощенную функциональность мы будем развивать в следующих версиях.
$sqlQuery = "SELECT f454 FROM ".DATA_TABLE."43 WHERE id={ID}"; $result = mysql_query($sqlQuery); $row = mysql_fetch_array($result); return $row['f454 '];Здесь DATA_TABLE - константа, равная <prefix>data (текущий префикс берется из файла config.php, он задается при установке программы), {ID} - шаблон номера ID текущей записи, подставляется при выполнении кода вычисляемого поля.
Для вашей задачи получаем следущий код:
$sqlQuery = "SELECT sum(f<номер поля Сумма таблицы Оплаты>) as summa FROM ".DATA_TABLE."<номер таблицы Оплаты> WHERE f<номер поля Счета таблицы Оплаты>={ID}"; $result = mysql_query($sqlQuery); $row = mysql_fetch_array($result); return $row['summa'];Номера полей и таблиц можно посмотреть в Настройках соответствующих таблиц и полей, в адресной строке браузера (table и field соответственно)
В целях упрощения работы с вычисляемыми полями (чтобы не запутаться в этих всех номерах), нами была написана функция data_table, которая работает напрямую с русскими именами, но она пока не не позволяет делать сложные запросы, в частности вычисление групповых функций sql, как в вашем примере. Упрощенную функциональность мы будем развивать в следующих версиях.
#3
Отправлено 03 Февраль 2010 - 11:33
Огромное спасибо! Все работает, единственный момент - пришлось добавить в запрос условие status=0, чтобы в выборку попадали только активные оплаты.
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных