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


как вычислить значение `число` из поля c самой ранней датой создания при равном поле связи с основной таблицей?


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

#1 Radik

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

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

Отправлено 05 Декабрь 2013 - 15:38

Есть подтаблица
поля:
`дата создания`
`связь с основной таблицей`
`сумма`
`%`

как написать вычисление:
значения поля `%` = (текущая `сумма` * 100) / `сумма` из поля c самой ранней датой создания при равном поле связи с основной таблицей

#2 CbCoder

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

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

Отправлено 05 Декабрь 2013 - 16:18

А поля связи с родительской таблицей нет разве? Я так понимаю, нужно брать не по всей таблице самую раннюю дату, а только по текущей род.записи?

#3 Radik

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

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

Отправлено 05 Декабрь 2013 - 16:44

Да, поле связи есть `связь с родительской таблицей`

#4 CbCoder

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

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

Отправлено 05 Декабрь 2013 - 16:49

Обращаетесь через запрос к текущей таблице с выборкой по родительской и сортировкой по полю `дата создания`, первая запись будет с самой ранней датой. Затем достаете оттуда сумму.

$first_row = data_select_array ($table_id, "`f111`=",$line['связь с родительской таблицей']['raw']," ORDER BY `f222`");
$first_summa = $first_row['f333'];
$line['%'] = ($line['сумма'] * 100) / $first_summa;
// f111 - `связь с родительской таблицей`
// f222 - `дата создания`
// f333 - `сумма`

Сообщение отредактировал CbCoder: 06 Декабрь 2013 - 12:46


#5 Radik

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

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

Отправлено 06 Декабрь 2013 - 10:53

почему-то не отрабатывает этот... может вы заметите баг?

$first_row = data_select_array (681, "`f10681`=",$line['ID заявки']," ORDER BY `add_time`");
$first_summa = $first_row['f10791'];

#6 Radik

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

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

Отправлено 06 Декабрь 2013 - 11:16

Так тоже не отрабатывает ...

$first_row = data_select_array (681, "`f10681`=",$line['ID заявки']," ORDER BY `add_time` DESC LIMIT 1");
$first_summa = $first_row ['f10791'];
$line['%'] = $first_summa;

#7 CbCoder

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

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

Отправлено 06 Декабрь 2013 - 11:34

Баг на экран не выходит? Возможно ошиблись с кодами полей. Тестируйте выводом переменных. Еще можно вставить $show_sql_request=1 для вывода запроса и проверить его в edit_sql.php.

Возможно, что банально сумма в первой записи пустая, или не та запись выбирается, что вы ожидаете.

#8 Radik

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

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

Отправлено 06 Декабрь 2013 - 12:37

Спасибо, разобрался. Поле связи - $line['ID заявки'][raw]

#9 CbCoder

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

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

Отправлено 06 Декабрь 2013 - 12:45

Да, сам ступил, извиняюсь.





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

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