/ 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
Største værdi i join mellem to tabeller?
Fra : Thomas Eg Jørgensen


Dato : 28-08-03 22:00

Hej

Jeg har to tabeller. Den ene indeholder records over "pakker" i en
virksomhed. Den anden indeholder status for pakkerne. Hver gang pakken
havner i en ny afdeling lave _en ny_ record med et timestamp på hvornår
pakken ankom. På den måde kan man se hvor lang tid hver pakke har været i
hver afdeling.

Jeg ønsker nu at lave et udtræk fra databasen med _alle_ pakker og den
aktuelle afdeling. Mit problem er at udtrykket skal sørge for at vælge den
seneste dato i tabellen over afdelinger.

Forsimplet ser tabellerne ud som:
Tabel1:
-ID
-Pakketekst

Tabel 2:
-ID
-Afdelingsnavn
-PakkeID
-CheckinTimeStamp

Jeg ønsker at få et resultat bestående af:
Tabel1.ID
Tabel1.Pakketekst
Tabel2.id
Tabel2.afdelingsnavn
Tabel2.pakkeid
Tabel2.Checkintimestamp

Jeg forsøgte noget med en join, men jeg ender altid med problemet med at kun
tage den "nyeste afdeling" med og ikke de afdelinger som pakken tidligere
har været igennem....

Nogen ideer?

På forhånd tak

MVH
Thomas



 
 
Peter Laursen (29-08-2003)
Kommentar
Fra : Peter Laursen


Dato : 29-08-03 02:05


"Thomas Eg Jørgensen" <thomas@kontorbutikken.dk> wrote in message
news:bilqf8$lpp$1@sunsite.dk...
> Hej
>
> Jeg har to tabeller. Den ene indeholder records over "pakker" i en
> virksomhed. Den anden indeholder status for pakkerne. Hver gang
pakken
> havner i en ny afdeling lave _en ny_ record med et timestamp på
hvornår
> pakken ankom. På den måde kan man se hvor lang tid hver pakke har
været i
> hver afdeling.
>
> Jeg ønsker nu at lave et udtræk fra databasen med _alle_ pakker og
den
> aktuelle afdeling. Mit problem er at udtrykket skal sørge for at
vælge den
> seneste dato i tabellen over afdelinger.
>
> Forsimplet ser tabellerne ud som:
> Tabel1:
> -ID
> -Pakketekst
>
> Tabel 2:
> -ID
> -Afdelingsnavn
> -PakkeID
> -CheckinTimeStamp
>
> Jeg ønsker at få et resultat bestående af:
> Tabel1.ID
> Tabel1.Pakketekst
> Tabel2.id
> Tabel2.afdelingsnavn
> Tabel2.pakkeid
> Tabel2.Checkintimestamp
>
> Jeg forsøgte noget med en join, men jeg ender altid med problemet
med at kun
> tage den "nyeste afdeling" med og ikke de afdelinger som pakken
tidligere
> har været igennem....
>
> Nogen ideer?
>
> På forhånd tak
>
> MVH
> Thomas
>

Hvilket felt joiner du på? Jeg antager at du joiner tabel1.id med
tabel2.pakkeid:

select tabel1.*, tabel2.*
from tabel1, tabel2
where tabel1.id= tabel2.pakkeid
and tabel2.Checkintimestamp = (
select max(t.Checkintimestamp)
from tabel2 t
where t.pakkeid = tabel2.pakkeid)

Peter Laursen



Thomas Eg Jørgensen (29-08-2003)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 29-08-03 09:58


"Peter Laursen" <pl@mail1.remove.this.stofanet.dk> wrote in message
news:bim8qs$b7g$1@sunsite.dk...
> Hvilket felt joiner du på? Jeg antager at du joiner tabel1.id med
> tabel2.pakkeid:

Ja, sorry, det glemte jeg at oplyse, men din antagelse er rigtig....

> select tabel1.*, tabel2.*
> from tabel1, tabel2
> where tabel1.id= tabel2.pakkeid
> and tabel2.Checkintimestamp = (
> select max(t.Checkintimestamp)
> from tabel2 t
> where t.pakkeid = tabel2.pakkeid)

Tak for forslaget.

Jeg får desværre fejlen "End of SELECT statement expected, instead found
'MAX'"....? Er det min database der ikke understøtter den måde at sætte dem
sammen på eller? Systemet kører på en DBISAM database...

MVH
Thomas



Peter Laursen (29-08-2003)
Kommentar
Fra : Peter Laursen


Dato : 29-08-03 22:26

>
> > select tabel1.*, tabel2.*
> > from tabel1, tabel2
> > where tabel1.id= tabel2.pakkeid
> > and tabel2.Checkintimestamp = (
> > select max(t.Checkintimestamp)
> > from tabel2 t
> > where t.pakkeid = tabel2.pakkeid)
>
> Tak for forslaget.
>
> Jeg får desværre fejlen "End of SELECT statement expected, instead
found
> 'MAX'"....? Er det min database der ikke understøtter den måde at
sætte dem
> sammen på eller? Systemet kører på en DBISAM database...
>

Det er testet på Oracle. Jeg kender desværre ikke DBISAM men en
søgning på google giver http://www.elevatesoft.com/scripts/discussion
Prøv at spørge der.

Peter


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408521
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste