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


последняя запись в подтаблице

последняя запись подтаблицы найти

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

#1 oknik

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

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

Отправлено 03 Март 2016 - 22:20

стандартный конфиг КБ допиливаем

у таблицы "Счета" есть подтаблица "Платежи"
по одному счету может быть несколько платежей
в "Счетах" есть поле "Дата п/п" (дата получения платежа)
в "Платежах" тоже есть "Дата п/п"

задача при изменении поля "Оплачено" в таблице "Счета"
при условии что в "Счете" поле "Оплачено" = "Сумма к оплате" (т.е. счет полностью оплачен)
брать "Дату п/п" у последнего сделанного платежа именно по данному Счету и записывать ее в такое же поле "Дату п/п" в "Счете"

может есть примеры где нибудь похожие?

#2 CbCoder

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

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

Отправлено 04 Март 2016 - 09:27

Ищите примеры запросов к подтаблицам.

Алгоритм: делаем запрос к подтаблице с условием "поле связи в подтаблице равно id текущей записи" и обратной сортировкой по id.

#3 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 04 Март 2016 - 11:15

Просмотр сообщенияCbCoder (04 Март 2016 - 09:27) писал:

Алгоритм: делаем запрос к подтаблице с условием "поле связи в подтаблице равно id текущей записи" и обратной сортировкой по id.
Лучше с обратной сортировкой по дате платежа. Были случаи, когда сотрудники заносят некорректно данные.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#4 CbCoder

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

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

Отправлено 04 Март 2016 - 11:33

Просмотр сообщенияandibrag (04 Март 2016 - 11:15) писал:

Лучше с обратной сортировкой по дате платежа. Были случаи, когда сотрудники заносят некорректно данные.

У меня была такая мысль, но у автора написано именно "у последнего сделанного платежа", а не "с максимальной датой платежа". Хотя, конечно смотря как прочитать...

#5 oknik

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

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

Отправлено 04 Март 2016 - 14:03

по дате платежа надо )

теперь бы найти хоть какие то примеры как нибудь, поиск по форуму не очень то "изобилен", чаще всего я ничего не нахожу (не только по этому запросу), или может я не знаю какие фразы искать? где и как искать что то?

я так понял что надо отсортировать по полю дата платежа, по убыванию и потом взять из первой по счету строки данные из даты платежа?
вот как такое написать? ) и как найти пример что бы посмотреть команды например нужные?

#6 CbCoder

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

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

Отправлено 04 Март 2016 - 14:44

1. Да, все правильно поняли. Не забывая про условие отсева по связи с основной записью (иначе будут отсортированы вообще все платежи, а не только по данному счету)
2. Вы не знаете как писать запросы? Запросы в каждой второй теме здесь. Ищите по "data_select".

#7 oknik

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

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

Отправлено 06 Май 2016 - 16:44

Просмотр сообщенияCbCoder (04 Март 2016 - 14:44) писал:

1. Да, все правильно поняли. Не забывая про условие отсева по связи с основной записью (иначе будут отсортированы вообще все платежи, а не только по данному счету)
2. Вы не знаете как писать запросы? Запросы в каждой второй теме здесь. Ищите по "data_select".

2. а так сработает?

$sqlQuery = "SELECT max(f6251) FROM ".DATA_TABLE."371 WHERE status=0 and f6231='".$line['ID']."'";
$data_pp = sql_query($sqlQuery);
$line['Счет']['Дата п/п']=$data_pp;

или здесь чего то не хватает? как в это примере например:

// Получаем сумму содержимого полей "Сумма" таблицы "Позиции счета", где поле "Счет" равно номеру счета.
$sqlQuery = "SELECT sum(f810) as summa FROM ".DATA_TABLE."74 WHERE status=0 AND f807='".$line['Счет']['ID']."'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$summa = $row['summa'];
// Заносим полученную сумму в поле "Сумма" родительской таблицы, обращаясь через поле связи "Счет"
$line['Счет']['Сумма'] = $summa ;


#8 CbCoder

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

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

Отправлено 11 Май 2016 - 17:58

Да, у вас пропущено несколько строк, код некорректный, выдаст ошибку. Во втором примере как раз эти строки есть.





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

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