Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужна помощь в написании запроса SQL (SELECT) [D7, Paradox]


Asail ©   (2006-01-11 15:40:00) 

Здрасте!
Возникла задача написать запрос на выборку из таблицы данных:
Таблица table состоит из следующих полей (упрощенно):
table.ID  :  Char ;
table.Date : Date;
table.Time : Time;
table.Rate : Float

Нужно отобрать для каждой ID ОДНУ последнюю запись до определенного времени.

SELECT T,"ID", T."Date", T."Time"
FROM table AS t
WHERE (t."Date"<"1.9.2005")or
         ( (t."Date"="1.9.2005")and(t."Time"<"12:00:00") )

Вернет все записи до 1.9.2005 12:00, а надо только одну последнюю для каждого ID, максимально близкую к указанному времени . Как можно такое описать? Я, чего-то, никак не дотумкаю :-(.
Заранее, большое спасибо.


evvcom   (2006-01-11 16:16:00) [1]


> 1. А LocalSQL, вроде, не поддерживает вложенные запросы?

Вроде... Вот и вопросы. Но вроде LocalSQL поддерживает джойн таблицы с sql, написанным в отдельном файле. Вот и поддержка подзапросов.

> 2. А примерчик можно?

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1136964821&n=1


unknown   (2006-01-11 16:13:00) [2]


> Asail   (11.01.06 16:02) [4]
>
> Не понял!!!


Нарисуй тут, какие примерно данные имеются и какой результат нужен.
ЗЫ:
подозрительный какой-то ID - Char, видимо это не идентификатор?


Asail   (2006-01-11 16:12:00) [3]

По разным полям разнесено, т.к. так сложилось исторически. Неохота таблицу переделывать. Так это не имеет значения, я, вот только все никак не врублюсь, что такое WHERE д.б.? И вопросы пошли, даже непробуя:
1. А LocalSQL, вроде, не поддерживает вложенные запросы?
2. А примерчик можно? И я отстану (надеюсь)!


evvcom   (2006-01-11 16:06:00) [4]


> (t."Date"<"1.9.2005")or
>          ( (t."Date"="1.9.2005")and(t."Time"<"12:00:00")
> )

А нафиг это по разным полям разнес? Собери вместе - меньше проблем будет. Имхо.

> Условие в WHERE д.б. перенесено в подзапрос

О! Сейчас попробует (может быть) и пойдут еще вопросы. :o) :?)


Asail   (2006-01-11 16:02:00) [5]

Не понял!!!


Asail   (2006-01-11 16:02:00) [6]

Не понял!!!


Johnmen   (2006-01-11 15:48:00) [7]

Условие в WHERE д.б. перенесено в подзапрос, который в WHERE, и в котором ещё добавится соединение с t по ID.


Asail   (2006-01-11 15:44:00) [8]

p.s. маленькое дополнение:
SELECT T,"ID", T."Date", T."Time", T."Rate"

Что, вобщем, сути вопроса не меняет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо