Конференция "Базы" » Задать цикл [D7, IB6.x]
 
  • Dagir © (01.09.08 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 © (01.09.08 10:18) [1]

    > Из базы данных выбираем данные

    Каким образом?
  • Dagir © (01.09.08 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
  • Медвежонок Пятачок © (01.09.08 10:30) [3]
    while not DataSet.Eof do
    begin
     ...
    end;
  • Dagir © (01.09.08 10:45) [4]
    Я знаю как задавать цикл, я не знаю как как осуществить выборку элементов Doc_i
    в столбце Docum, если эти элементы повторяются
  • Медвежонок Пятачок © (01.09.08 10:48) [5]
    Я знаю как задавать цикл
    Зачем тогда вопрос про цикл?

    а выборку ты уже сделал селектом.
  • Johnmen © (01.09.08 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 © (01.09.08 11:41) [7]
    > [0] Dagir ©   (01.09.08 09:54)
    > из Table1 поле Docum, из Table2 - поле Date, Table3 - поле Versiya.
    А к чему относится дата? Если к документу или версии, ИМХО странно держать ее в отдельной таблице.
  • evvcom © (01.09.08 15:44) [8]

    > [6]

    И LEFT JOIN логичнее заменить на INNER JOIN
 
Конференция "Базы" » Задать цикл [D7, IB6.x]
Есть новые Нет новых   [134473   +28][b:0][p:0]