Форум: "Базы";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
ВнизМожно ли сделать такой запрос: Найти похожие ветки
← →
Владий (2003-08-11 09:50) [0]Есть таблица с договорами. По ним идут перечисления, но не каждый день. Нужно выводить в таблицу таким образом, чтоб если ны было перечисления на дату, то писалось бы значение, предыдущего перечисления. И так по каждому договору...
Так можно сделать?
Хорошей Удачи!
Владий // ICQ: 47659886
← →
Соловьев (2003-08-11 09:56) [1]какая СУБД?
← →
Hawk2 (2003-08-11 10:06) [2]И структуру таблиц неплохо бы узнать?
← →
Владий (2003-08-11 10:16) [3]Таблица в Access"ной базе
ID_P - счетчик
GDate - дата перечисления
Contr - Договор
GSum - сумма перечисления
Хорошей Удачи!
Владий // ICQ: 47659886
← →
Владий (2003-08-11 10:19) [4]Соответственно, как я понимаю - нужно разсортировать по договору, а потом по датампроверить на наличие записей и если таковой нет, то добавить... Или я не понимаю чего-то?...
← →
Соловьев (2003-08-11 10:30) [5]а на какую дату? на текущую тебе?
думаю 2 запроса вида
select *
from table
where gdate=now and contr=:n_dog
и еще один
select *
from table
where contr=:n_dog
order by gdate desc
а в проге
if not query1.isempty then
edit1.text := query1.fieldbyname("gsum").asstring
else
edit1.text := query2.fieldbyname("gsum").asstring
← →
Hawk2 (2003-08-11 10:45) [6]Я думаю автор имел ввиду другое. Если я правильно понял то в таблице будут записи на каждий день по каждому введенному договору, но чтобы реализовать запрос автора нужно либо в программе делать так чтобы каждый день на каждый договор (если небыло перечислений) отискивалась запись с предидущей сумой и записывалась в поле GSum. Или если работать с уже имеющейся базой то тут не обойтись без промежуточных таблиц. Или может я чего-то не понял?
← →
Владий (2003-08-11 11:05) [7]Все правильно. но вот каким образом это все организовать я пока не представляю...
← →
stud (2003-08-11 11:12) [8]если выбрать все договора с максимальной датой? по идее получатся договора с текущей датой или последней введенной, те. предыдущей
← →
Hawk2 (2003-08-11 11:17) [9]Туговато соображаю, вобщем если есть возможность изменить программу, то делай как написал Соловьев, только я думаю здесь нужно использовать второй запрос, чтобы найти последнюю запись с суммой нужного нам договора, ну а потом вставка или апдейт, смотря что нужно. Кстати у тебя записи с договорами каждый день добавляются или в начале месяца? Если каждый день то как, автоматом или вручную? И еще, если все же програмку (которая заводит эти договора) изменить нельзя и приходится работать с чем есть, то наверное всетаки через временные таблицы.
← →
denche (2003-08-11 13:53) [10]Вот такой запрос не подойдет???
SELECT t1.Contr, t1.GSum , t1.GDate
FROM tabl AS t1
inner join
(SELECT max(t2.GDate) as GDate, t2.Contr
FROM tabl AS t2
where t2.GDate <= #01/01/2003#
group by t2.Contr
) as t3
on t1.contr = t3.contr
and t1.Gdate = t3.GDate
order by t1.contr
отлажен на Accesse 2000
← →
Владий (2003-08-11 17:10) [11]Как я понимаю, мне нужно делать доп. таблицу куда перекидывать данные, вставляя нехватающие строки (ибо перечисления далеко не ежедневны).
Данные все вносятся вручную...
PS. По поводу последнего скрипта - эксес не понимает откуда появились т2 и т3 =/
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c