/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste