Форум: "Базы";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];
ВнизЗадать цикл Найти похожие ветки
← →
Dagir © (2008-09-01 09:54) [0]Из базы данных выбираем данные: из Table1 поле Docum, из Table2 - поле Date, Table3 - поле Versiya.
Получается следующая таблица:
[B] Docum[/B] [B] Date[/B] [B]Versiya [/B]
Doc_1 31/01/08 1
Doc_1 01/02/08 2
Doc_1 3
Doc_2 06/01/08 1
Doc_2 2
Doc_3 12/05/08 1
Задача следующая: для каждого из Doc1,Doc2,...выбираем строку с последней версией(для Doc1-Versiya3,для Doc2-Versiya2,для Doc3-Versiya1) и проверяем не пусто ли поле Date в этой строке, если пусто, то переходим к предыдущей версии и так пока не найдем заполненое поле.
Проблема уже начинается с того, что не знаю как осуществить выборку элементов Doc_i
← →
Johnmen © (2008-09-01 10:18) [1]
> Из базы данных выбираем данные
Каким образом?
← →
Dagir © (2008-09-01 10:29) [2]select Docum,Date,Versiya from Table1 left join Table2 on Table2.doc_id = Table1.doc_id left join Table3 on Table3.ver_id = Table2.ver_id
← →
Медвежонок Пятачок © (2008-09-01 10:30) [3]while not DataSet.Eof do
begin
...
end;
← →
Dagir © (2008-09-01 10:45) [4]Я знаю как задавать цикл, я не знаю как как осуществить выборку элементов Doc_i
в столбце Docum, если эти элементы повторяются
← →
Медвежонок Пятачок © (2008-09-01 10:48) [5]Я знаю как задавать цикл
Зачем тогда вопрос про цикл?
а выборку ты уже сделал селектом.
← →
Johnmen © (2008-09-01 10:50) [6]Если принять, что номера версий возрастают с возрастанием даты (для упрощения запроса), то:
SELECT Docum,MAX(SuperDate),MAX(Versiya)
FROM Table1
LEFT JOIN Table2 ON Table2.doc_id = Table1.doc_id
LEFT JOIN Table3 ON Table3.ver_id = Table2.ver_id
WHERE SuperDate IS NOT NULL
GROUP BY Docum
PS
Зарезервированными словами не стОит называть свои объекты. В данном случае поля.
← →
Sergey13 © (2008-09-01 11:41) [7]> [0] Dagir © (01.09.08 09:54)
> из Table1 поле Docum, из Table2 - поле Date, Table3 - поле Versiya.
А к чему относится дата? Если к документу или версии, ИМХО странно держать ее в отдельной таблице.
← →
evvcom © (2008-09-01 15:44) [8]
> [6]
И LEFT JOIN логичнее заменить на INNER JOIN
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c