Главная страница


su.dbms.sql

 
 - SU.DBMS.SQL ------------------------------------------------------------------
 From : Valentine Zaretsky                   2:464/36       03 May 2001  16:29:27
 To : All
 Subject : Re: PostgreSQL v6.5.2,
 -------------------------------------------------------------------------------- 
 
 .MSGID: research.apex.dp.ua d522772e
 .REPLY: ddt.demos.su a47abbf0
 .REPLYADDR: valik@research.apex.dp.ua
 .REPLYTO: 2:464/36@fidonet UUCP
 .RFC-Message-ID: <3AF15D37.F99A0603@research.apex.dp.ua>
 .RFC-References: <1146138475@p3.f75.n5002.z2.fidonet>
 <9cr9c2$qsa$1@ddt.demos.su>
 .RFC-Reply-To: valik@apex.dp.ua
 .RFC-X-Accept-Language: en
 From: Valentine Zaretsky <valik@research.apex.dp.ua>
 Subject: Re: PostgreSQL v6.5.2, 
   =?koi8-r?Q?=CD=CF=D6=CE=CF=20=CC=C9=20=D2=C5=C1=CC=C9=DA=CF=D7=C1=D4=D8=2E=2E=
 2E?=
 
 bucicov@carmez.mldnet.com wrote:
 
 > From: "Bucicov Anatolie" <bucicov@carmez.mldnet.com>
 >
 > Ivan Shmakov <Ivan.Shmakov@p3.f75.n5002.z2.fidonet.org> сообщил в новостях
 > следующее:1146138475@p3.f75.n5002.z2.fidonet.ftn...
 > >
 > > Допустим есть база данных mybase, в ней есть таблица mytable, в
 > > ней -- три поля: символьное name, числовое value и time типа
 > > datetime. Можно ли средствами языка SQL сабжевой базы данных
 > > реализовать запрос, по которому бы для всевозможных имеющихся
 > > значений name выдавалось значение поля value той записи, которая
 > > имеет наиболее "новое" значение time? То есть, например, есть
 > > такие записи:
 > > name | value | time
 > > --------+-------+---------------------
 > > test1 | 10000 | Apr 20 10:00:01 2001
 > > test2   | 20000 | Apr 21 15:31:44 2001
 > > test3 | 15000 | Apr 21 17:23:31 2001
 > > test3 | 13000 | Apr 22 10:21:15 2001
 > > test2 | 17500 | Apr 22 13:05:53 2001
 > > По запросу получаем:
 > > name | value | time
 > > --------+-------+---------------------
 > > test1 | 10000 | Apr 20 10:00:01 2001
 > > test2 | 17500 | Apr 22 13:05:53 2001
 > > test3 | 13000 | Apr 22 10:21:15 2001
 > >
 > > Кроме того, если это не реализуемо сабжевой версией, но более
 > > новые это умеют, тогда хотелось бы знать, с какой версии это
 > > возможно.
 > >
 > > p.s. А если надо получить тоже самое, только time не просто наиболее
 > > "новое", но, кроме того, меньше некоторого наперёд заданного?
 > > --
 > > Sincerely yours Death.
 >
 > Создал быстренько себе табличку:
 >
 > create table (id integer, value integer, dt date)
 >
 >  и наляпал тебе 2 простеньких запроса (черт.. оба работают.. прикинь..)
 >
 > 1)
 > select p.id, p.value
 > from exp p
 > where dt = (select max(s.dt) from exp s where s.id=p.id)
 >
 > 2)
 > select p.id, p.value
 > from Exp p inner join
 >      (select id, max(dt) from exp group by id) as s (id, dt) on (p.id = s.
 > ID and p.dt = s.dt)
 
 Применительно к postgresql можно гораздо проще сделать:
 
 select value from mytable where time<=some_time_limit order by time desc
 limit 1
 
 WBR, Valentine Zaretsky
 
 --- Mozilla 4.72 [en] (X11; U; Linux 2.2.14-12bc i686)
  * Origin: Trifle ISP, Dnepropetrovsk, Ukraine (2:464/36@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: PostgreSQL v6.5.2,   Valentine Zaretsky   03 May 2001 16:29:27 
Архивное /su.dbms.sql/1265288501.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional