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

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

Пипл! помогите с SQL запросом [D7, Paradox]


Pancha ©   (2004-02-26 16:56:00) 

Есть таблица table.DB
naimenovanie   Data
наим1         10.01.04
наим1         12.01.04
наим1         15.01.04
наим1         20.01.04
наим2         10.01.04
наим2         17.02.04
наим2         21.02.04
и т.д.

Как провести фильтрацию на текущую дату, чтобы получилось

наим1     20.01.04 //ближайшая дата к сегодняшней дате для наим1
наим2     21.02.04 //для наим2
и т.д.


Alex_Bredin   (2004-02-26 18:00:00) [1]


> Pancha   (26.02.04 17:38) [15]


надо сразу корректно ставить вопрос


Sandman25+1   (2004-02-26 17:45:00) [2]

[16] Johnmen ©   (26.02.04 17:38)

Согласен. Было бы как в вопросе.

>Разве это плохо?

Тяжелый день сегодня. А завтра будет еще хуже :)


Johnmen   (2004-02-26 17:39:00) [3]

>Pancha   (26.02.04 17:38) [15]

Тогда Sandman25+1   (26.02.04 17:01) [1]


Johnmen   (2004-02-26 17:38:00) [4]

>Sandman25+1   (26.02.04 17:32) [14]
>Тогда было бы написано, не ближайший, а ближайший в будущем :)

Просто ближайшая. Как в вопросе...

>Разве это плохо?

Отчего такой пессимизм ? Я поводов не давал...:)


Pancha   (2004-02-26 17:38:00) [5]

По поводу текущей я загнул, просто -  мах дату,
но у меня больше двух полей и
select naim,max(data)from mytable t1
group by naim

не канает


Sandman25+1   (2004-02-26 17:32:00) [6]

[13] Johnmen ©   (26.02.04 17:27)

Тогда было бы написано, не ближайший, а ближайший в будущем :)

А вообще, автор уже ясно написал, что сам не уверен, что хочет. Вот я и пытался ответить на самую типичную ситуацию - найти последнюю использовавшуюся цену. Разве это плохо? :)


Johnmen   (2004-02-26 17:27:00) [7]

>Sandman25 © (26.02.04 17:20) [12]

А м.б. это расписание ?
:)


Sandman25+1   (2004-02-26 17:20:00) [8]

[9] Johnmen ©   (26.02.04 17:13)

Я, наивный, исходил из того, что машины времени пока не изобретено, и в базе нет данных на завтра. :)
Но если надо учесть, то не вижу проблемы в добавлении and date <= :date во вложенный select.


Соловьев   (2004-02-26 17:14:00) [9]

2 Johnmen ©   (26.02.04 17:09) [6]
да уж.. век живи, век учись :)


Pancha   (2004-02-26 17:13:00) [10]

Так и не понял, что мне нада знать:) Но пасиба.


Johnmen   (2004-02-26 17:13:00) [11]

>Sandman25 © (26.02.04 17:01) [1]
>Alex_Bredin ©   (26.02.04 17:05) [2]

Казалось бы, причем здесь тек.дата ?
:)))


Sandman25+1   (2004-02-26 17:12:00) [12]

[7] Alex_Bredin ©   (26.02.04 17:09)

Конечно. Ваш запрос быстрее работает, так что если ему надо именно то, что он написал, то лучше использвать Ваш вариант.


Alex_Bredin   (2004-02-26 17:09:00) [13]

это знает только автор ))


Johnmen   (2004-02-26 17:09:00) [14]

>Соловьев ©   (26.02.04 17:05) [3]

Правильно по поводу того, что надо же учесть тек.дату.
Но неверно по результату...:)


Sandman25+1   (2004-02-26 17:06:00) [15]

Конечно, проще. Но логически мысля, в таблице кроме этих двух полей есть еще поля, и автора интересует найти значения этих полей. Цены, например.


Johnmen   (2004-02-26 17:06:00) [16]

Примерно так

SELECT *
FROM table T1
WHERE T1.Data-<текущая дата>=
 SELECT MIN(T2.Data-<текущая дата>) FROM table T2
 WHERE T2.naimenovanie=T1.naimenovanie)

хотя кто знает этот Парадокс...:)


Соловьев   (2004-02-26 17:05:00) [17]

select naimenovanie, Max(Data)
from table
group by naimenovanie
having by Max(Data)<:param


Alex_Bredin   (2004-02-26 17:05:00) [18]

а не проще

select naim,max(data)from mytable t1
group by naim


Sandman25+1   (2004-02-26 17:01:00) [19]

select * from mytable t1 where data = (select max(data) from mytable t2 where t2.naimen=t1.naimen)


Наверх

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