1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Выбор данных из таблицы

Тема в разделе "Базы данных и администрирование", создана пользователем jcolor, 19 апр 2007.

  1. jcolor

    jcolor Гость

    Репутация:
    0
    Всем, привет:)
    Подскажите, кто знает, как можно красиво написать запрос по выбору данных из таблицы:
    есть таблица
    DatеRequest - дата работы
    UserName - имя пользователя
    DocName - название док-та, с кот. пользователь работал за эту дату

    В эту таблицу заносятся данные по работе пользователя с документами.
    Необходимо выбрать последнюю дату работы каждого пользователя и последний открываемый им документ.

    Пробовала сделать след. образом:
    Код:
    DECLARE @T1 TABLE(UserName CHAR(100), DatеRequestMax DATETIME)
    DECLARE @T2 TABLE(UserName CHAR(100), DateRequest DATETIME, DocName CHAR(100))
    
    -- выбираю последнюю дату работы каждого пользователя
    INSERT INTO @T1(UserName, DatеRequestMax)
    SELECT UserName, MAX(DateRequest) FROM TableName
    GROUP BY UserName
    
    -- выбираю название открываемых документов
    INSERT INTO @T2(UserName, DateRequest, DocName)
    SELECT UserName, DateRequest, DocName FROM TableName
    GROUP BY UserName, DateRequest, DocName
    
    -- объединяю две таблицы, чтоб получить последний открываемый документ
    SELECT a.UserName, a.DatеRequestMax, b.DocName FROM @T1 AS a
    INNER JOIN @T2 AS b ON(a.UserName LIKE b.UserName AND a.DatеRequestMax LIKE b.DateRequest)
    ORDER BY a.UserName
    Но таким образом запрос выполняется длительное время,
    какие еще есть варианты для выбора последних данных из таблицы??
     
Загрузка...

Поделиться этой страницей