Перейти к содержимому


Вычисление-подставить сумму значений из подтаблицы в родительскую


Сообщений в теме: 6

#1 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 18 Июнь 2013 - 18:48

Добрый день! Не получается выполнить вычисление.
Данные такие: Есть подтаблица, строка "Сумма". Итоговое (суммированное) значение этих строк должно подставляться в родительскую таблицу (также строка "сумма). Прикрепленный файл  Клиентская база - Счет - Google Chrome (2013-06-19 09.18.22).png   41,57К   66 Количество загрузок:

В вычислении прописан следующий код:

$sqlQuery = "SELECT sum(f2911) as summa FROM ".DATA_TABLE."221
WHERE status=0 AND f2861='".$line['Номер']['id']."'";

$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
$line['Номер']['Сумма'] = $row['summa'];

Где sum(f2911) - поле "Сумма" в подтаблице
".DATA_TABLE."221 - номер подтаблицы
f2861 - поле "Номер", связывающее подтаблицу с родительской

Вычисление добавляю в подчиненную таблицу.

Может тут что-то не так написала?
Помогите пожалуйста, 3й день не могу добить такую вроде простую задачу((

На всякий случай привожу скрины id таблиц и полей:
1) Поле "Сумма" в подтаблице и номер подтаблицы Прикрепленный файл  Клиентская база - Редактирование поля - Google Chrome (2013-06-19 09.22.30).png   21,55К   82 Количество загрузок:
2) Поле "Номер" в подтаблице Прикрепленный файл  Клиентская база - Редактирование поля - Google Chrome (2013-06-19 09.23.30).png   31,51К   51 Количество загрузок:

Сообщение отредактировал Dinara: 19 Июнь 2013 - 12:23


#2 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 19 Июнь 2013 - 07:16

Странно...в форуме нашла следующее вычисление:
$sqlQ = "SELECT SUM(`f2911`) AS sum FROM ".DATA_TABLE."221 WHERE `f2861`=".$line['Номер']['raw']." and status=0 and `id`<>".$ID;
$pre = sql_query($sqlQ) or die(mysql_error());
$row = mysql_fetch_assoc($pre);
if ($row['sum']===NULL) { $line['Номер']['Сумма']=$line['Сумма']; }
else { $line['Номер']['Сумма']=$row['sum']+$line['Сумма']; }

Поставила его, указала условие "При изменении поля=Сумма" - ЗАРАБОТАЛО)
Почему не работал код выше, который указан в документации? (п.с. условие было прописано то же самое...)

#3 Гость_Roman_*

  • Гости

Отправлено 19 Июнь 2013 - 12:11

Проверим пример в документации. На первый взгляд всё корректно.

#4 KLV

    Участник

  • Пользователи
  • PipPip
  • 24 сообщений

Отправлено 28 Июль 2014 - 15:44

Добрый день! В документации также есть такое вычисление:

$result = data_select_field(74,"`f2051`","`status`=0 {$deleteCond} AND `f807`=",$line['Счет']['raw']," ORDER BY `add_time` DESC");
$row = sql_fetch_assoc($result);
// запись итога в таблицу
if ($row['f2051'])
$line['Счет']['Сумма'] = $row['f2051'];

А как добавить переменную в этом вычислении, чтобы в основной таблице в строчке Сумма также выводилась, например, Дата (без времени) из подтаблицы? Например, 300 26.07.2014. Заранее прошу прощения за примитивный вопрос.

#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 28 Июль 2014 - 15:52

Именно "в строчке Сумма" вы не выведите дату, т.к. это числовое поле. Разные данные должны выводиться в разных полях. Можно вывести дату в другое поле.

#6 KLV

    Участник

  • Пользователи
  • PipPip
  • 24 сообщений

Отправлено 29 Июль 2014 - 08:16

Просмотр сообщенияCbCoder (28 Июль 2014 - 15:52) писал:

Именно "в строчке Сумма" вы не выведите дату, т.к. это числовое поле. Разные данные должны выводиться в разных полях. Можно вывести дату в другое поле.
А если Сумма будет текстовым?

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 29 Июль 2014 - 08:56

Просмотр сообщенияKLV (29 Июль 2014 - 08:16) писал:

А если Сумма будет текстовым?

А зачем мешать разные данные в одно поле? Почему не разделить по двум? Так гораздо удобнее работать, например можно считать итоговую сумму по таблице (если поле - число) или задавать фильтр по периоду (если поле - дата), что невозможно будет сделать в случае слитого поля. К тому же придется добавлять в вычисление функции преобразования внутреннего формата числа и даты в отображаемый, что в "своих" полях делается автоматически.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных