|
| Nyeste i kategori Fra : Sonni Skammelsen |
Dato : 30-11-04 14:17 |
|
Hej
Jeg har en tabel som blandt andet indeholder en kategori og et timestamp.
Nu kunne jeg så godt tænke mig at vælge den nyeste entry for hver
kategori ud fra mit timestamp.
Den kan jeg ikke lige greje, er der en der kan spake i den rigtige retning.
--
Sonni
| |
///JJ (30-11-2004)
| Kommentar Fra : ///JJ |
Dato : 30-11-04 21:08 |
|
Sonni Skammelsen wrote:
> Hej
>
> Jeg har en tabel som blandt andet indeholder en kategori og et
> timestamp. Nu kunne jeg så godt tænke mig at vælge den nyeste entry
> for hver
> kategori ud fra mit timestamp.
>
> Den kan jeg ikke lige greje, er der en der kan spake i den rigtige
> retning.
Det kan vel gøres på flere måder. Her er to (uafprøvede):
select top 1 * from tabel order by timestamp desc
eller
select * from tabel where max(timestamp)=timestamp
--
Mvh
///JJ
| |
Sonni Skammelsen (01-12-2004)
| Kommentar Fra : Sonni Skammelsen |
Dato : 01-12-04 09:27 |
|
On Tue, 30 Nov 2004 21:07:47 +0100, ///JJ wrote:
> Sonni Skammelsen wrote:
>> Hej
>>
>> Jeg har en tabel som blandt andet indeholder en kategori og et
>> timestamp. Nu kunne jeg så godt tænke mig at vælge den nyeste entry
>> for hver
>> kategori ud fra mit timestamp.
>>
>> Den kan jeg ikke lige greje, er der en der kan spake i den rigtige
>> retning.
>
> Det kan vel gøres på flere måder. Her er to (uafprøvede):
>
> select top 1 * from tabel order by timestamp desc
> eller
> select * from tabel where max(timestamp)=timestamp
Den giver kun den nyeste entry.
Jeg skulle gerne have den nyeste entry for alle kategorier som jeg måtte
have.
--
Sonni
| |
Troels Arvin (01-12-2004)
| Kommentar Fra : Troels Arvin |
Dato : 01-12-04 09:53 |
|
On Wed, 01 Dec 2004 09:26:50 +0100, Sonni Skammelsen wrote:
> Jeg skulle gerne have den nyeste entry for alle kategorier som jeg måtte
> have.
Lad os sige, du har følgende tabel som udgangspunkt:
fullname | stamp | cat
----------------------------------------------------
Anders Andersen | 2004-12-01 09:32:35.744871 | kat1
Peter Petersen | 2004-12-01 09:32:45.758659 | kat1
Ole Olesen | 2004-12-01 09:32:57.021197 | kat2
Mogens Mogensen | 2004-12-01 09:33:07.452861 | kat3
Stig Stigsen | 2004-12-01 09:33:16.688078 | kat3
Mads Madsen | 2004-12-01 09:33:24.818442 | kat3
Du kan da starte med at skabe et view, der giver dig de største
timestamps i hver kategori:
CREATE VIEW maxcat AS
SELECT cat,MAX(stamp) AS maxstamp
FROM foo
GROUP BY cat;
Dette giver:
cat | maxstamp
------+----------------------------
kat2 | 2004-12-01 09:32:57.021197
kat1 | 2004-12-01 09:32:45.758659
kat3 | 2004-12-01 09:33:24.818442
Du kan nu join'e:
SELECT fullname,stamp,foo.cat
FROM foo JOIN maxcat ON stamp=maxstamp;
fullname | stamp | cat
----------------+----------------------------+------
Peter Petersen | 2004-12-01 09:32:45.758659 | kat1
Ole Olesen | 2004-12-01 09:32:57.021197 | kat2
Mads Madsen | 2004-12-01 09:33:24.818442 | kat3
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Kristian Damm Jensen (01-12-2004)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 01-12-04 09:40 |
|
"///JJ" <nospam@tdcadsl.dk> wrote in message news:<41acd314$0$158$edfadb0f@dtext01.news.tele.dk>...
> Sonni Skammelsen wrote:
> > Hej
> >
> > Jeg har en tabel som blandt andet indeholder en kategori og et
> > timestamp. Nu kunne jeg så godt tænke mig at vælge den nyeste entry
> > for hver
> > kategori ud fra mit timestamp.
> >
> > Den kan jeg ikke lige greje, er der en der kan spake i den rigtige
> > retning.
>
> Det kan vel gøres på flere måder. Her er to (uafprøvede):
>
> select top 1 * from tabel order by timestamp desc
Ikke standard, men den eller noget lignende kan bringes til at virke i
de fleste implementationer.
> eller
> select * from tabel where max(timestamp)=timestamp
Virker ikke mig bekendt, og er i al fald ikke standard. (Og uanset
hvad, skulle der nok stå having i stedet for where.)
Prøv i stedet
select * from tabel
where timestamt = (select max(timestamp) from tabel)
Kristian
| |
Kaj Julius (02-12-2004)
| Kommentar Fra : Kaj Julius |
Dato : 02-12-04 01:07 |
|
"Sonni Skammelsen" <news@sonni.org> skrev i en meddelelse
news:pan.2004.11.30.13.16.42.461623@sonni.org...
> Hej
>
> Jeg har en tabel som blandt andet indeholder en kategori og et timestamp.
> Nu kunne jeg så godt tænke mig at vælge den nyeste entry for hver
> kategori ud fra mit timestamp.
>
> Den kan jeg ikke lige greje, er der en der kan spake i den rigtige
> retning.
>
> --
> Sonni
Jeg ville tro noget lignende dette skulle virke (dog ikke testet)
SELECT * FROM table1 t WHERE EXISTS (SELECT kategori FROM table1 WHERE
kategori = t.kategori GROUP BY kategori HAVING max(timestamp) = t.timestamp)
/ Kaj
| |
|
|