Конференция "Начинающим" » как получить максимальное значение? [D7, DBISAM]
 
  • webpauk © (26.09.08 14:33) [0]
    Есть 2 таблицы

    T1 (ID INTEGER, IDValue INTEGER, Value CHAR(10))
    T2 (ID INTEGER, IDValue INTEGER, Value CHAR(10))

    Данные T2.IDValue могут повторяться. Как выбрать ПОСЛЕДНЕЕ значение T2.IDValue  (MAX(T2.ID))


    UPDATE T1 SET T1.Value=T2.Value FROM T1
    INNER JOIN T2 ON (T1.IDValue=T2.IDValue)
    WHERE (T1.ID=2) AND ...
  • Поросенок Винни-Пух © (26.09.08 14:45) [1]
    а что такое "последнее" значение?
  • webpauk © (26.09.08 14:53) [2]

    > Поросенок Винни-Пух ©   (26.09.08 14:45) [1]

    MAX(ID)
  • Anatoly Podgoretsky © (26.09.08 14:58) [3]
    Надо добавить еще одно поле в таблицу, или RecordDateTime или RecordOrder
  • webpauk © (26.09.08 15:15) [4]

    > Anatoly Podgoretsky ©   (26.09.08 14:58) [3]

    поле RecordDateTime - есть
    ну и?
    всё равно MAX(RecordDateTime) соответствует MAX(ID)
  • webpauk © (26.09.08 15:16) [5]

    > Anatoly Podgoretsky ©   (26.09.08 14:58) [3]

    RecordOrder - поле ID и есть такой идентификатор
  • Johnmen © (26.09.08 15:17) [6]

    > как получить максимальное значение?


    >  Как выбрать ПОСЛЕДНЕЕ значение

    Так какое же?
    И зачем, если не секрет?
  • webpauk © (26.09.08 15:20) [7]

    > Johnmen ©   (26.09.08 15:17) [6]

    в второй таблице хранится мусор(история). Интересует только последнее (MAX) значение, соответствующее последнему обновлению информации.

    в первую таблицу надо добавить только такие записи.
  • Johnmen © (26.09.08 15:22) [8]

    > webpauk ©   (26.09.08 15:20) [7]

    А если пока ты добавляешь последнее обновление, там появится ещё более новое?
  • webpauk © (26.09.08 15:23) [9]
    Table2:
    ID   IDValue    Value
    1    1             Значение1
    2    2             Значение2
    3    1             Значение11
    4    1             Значение12
    5    2             Значение21
  • webpauk © (26.09.08 15:23) [10]

    > Johnmen ©   (26.09.08 15:22) [8]

    блокируется таблица во время выборки
  • Johnmen © (26.09.08 15:27) [11]
    Обычно так
    ... AND (T2.ID=(SELECT MAX(T3.ID) FROM T2))

  • Johnmen © (26.09.08 15:29) [12]

    > ... AND (T2.ID=(SELECT MAX(T3.ID) FROM T2 T3))
  • Ega23 © (26.09.08 16:25) [13]
    AND (T2.ID=(SELECT MAX(T3.ID) FROM T2))



    IsNull ещё неплохо добавить. Ну или его аналог.
 
Конференция "Начинающим" » как получить максимальное значение? [D7, DBISAM]
Есть новые Нет новых   [134473   +32][b:0][p:0.001]