Avatar billede avalon116 Nybegynder
05. marts 2003 - 20:20 Der er 20 kommentarer og
1 løsning

feltværdi i forrige post

jeg vil gerne lave en forespørgsel udfra en tabel, der indeholder en række personer, der hver har et antal begivenheder, beskrevet ved et begivenhedsnummer.

Forespørgslen skal indeholde værdien af et felt (felt1) fra det begivenhedsnummer, der er een mindre end det begivenhedsnummer, der står i den aktuelle post. I den aktuelle post, skal jeg altså bruge den foregående begivenhed.

Nogen bud?
Avatar billede arne_v Ekspert
05. marts 2003 - 20:26 #1
Det må være noget i stil med:

SELECT tabel1.felt1,tabel2.felt1 FROM tabel AS tabel1,tabel AS tabel2
WHERE tabel1.begivenhed = (tabel2.begivenhed + 1);
Avatar billede terry Ekspert
05. marts 2003 - 20:29 #2
- 1
Avatar billede avalon116 Nybegynder
05. marts 2003 - 20:32 #3
er forvirret over alle tabelreferencerne. Er tabel1 og tabel2 nogle fiktive tabeller, som oprettes for at adskille tingene?
Avatar billede avalon116 Nybegynder
05. marts 2003 - 20:35 #4
forresten er det ikke altid at begivenhedsnummeret er een mindre. Sommetider er det endnu mindre. Men det er altid sådan at begivenhedsnummeret er det største tal som er mindre end det aktuelle begivenhedsnummer. Kan man sætte det på?
Avatar billede terry Ekspert
05. marts 2003 - 20:35 #5
avalon> you say "en table" HOW are there "et antal" per person ig ther eis only one table?
Avatar billede arne_v Ekspert
05. marts 2003 - 20:35 #6
Nej det er den samme tabel med to navne.

FROM tabel AS tabel1,tabel AS tabel2

antager at din tabel hedder "tabel" og refererer til den
under 2 navne "tabel1" og "tabel2".

Det er måden man i SQL sammengligner 2 records i samme
tabel på.
Avatar billede arne_v Ekspert
05. marts 2003 - 20:38 #7
Ups.

Min SQL baserer sig på at der er præcis 1 til forskel.

Det andet er svært !
Avatar billede avalon116 Nybegynder
05. marts 2003 - 20:39 #8
terry> hver person optræder flere gange - een gang for hver hændelse
Avatar billede avalon116 Nybegynder
05. marts 2003 - 20:41 #9
arne> det er osse fint, det var jo det jeg spurgte om....prøver det lige
Avatar billede mortrr Praktikant
05. marts 2003 - 20:44 #10
select max(begivenhedsnr) from tabel where begivenhedsnr<aktuelt begivenhedsnr
Avatar billede avalon116 Nybegynder
05. marts 2003 - 20:55 #11
det fungerer ikke rigtigt, det er noget med at den skal tage det forrige begivenhedsnummer fra den aktuelle person (identificeret ved personnummeret). Så det er nok lidt mere kringlet end jeg først troede...
Avatar billede mortrr Praktikant
05. marts 2003 - 20:57 #12
select max(begivenhedsnr) from tabel where begivenhedsnr<aktuelt begivenhedsnr and personnummer=aktuelt personnummer
?
Avatar billede terry Ekspert
05. marts 2003 - 20:58 #13
SELECT T1.UserID, T1.BegivNr, DMax("BegivNr","tblTest","UserID = " & [UserID] & " AND BegivNr < " & [BegivNr]) AS Prev
FROM tbltest AS T1;
Avatar billede avalon116 Nybegynder
05. marts 2003 - 21:01 #14
I nedenstående eksempel:
person    begivenhedsnummer    felt1
1        1                    A
1        2                    B
1        3                    C
2        1                    Z
2        3                    X

vil jeg gerne have:

person    begivenhedsnummer    felt1
1        1                    A
1        2                    A
1        3                    B
2        1                    Z
2        3                    Z
Avatar billede terry Ekspert
05. marts 2003 - 21:10 #15
1        1                    A
1        2                    B
1        3                    C
2        1                    Z
2        3                    X

would give you

1        1                   
1        2                    A
1        3                    B
2        1                   
2        3                    Z
Avatar billede avalon116 Nybegynder
05. marts 2003 - 21:12 #16
men jeg tror dit forslag ville fungere, hvis man bruger "<= " korrekt?
Avatar billede avalon116 Nybegynder
05. marts 2003 - 21:13 #17
terry> jeg er forvirret over tabelreferencer igen. Er T1 min oprindelige tabel?
Avatar billede terry Ekspert
05. marts 2003 - 21:14 #18
YES
Avatar billede terry Ekspert
05. marts 2003 - 21:17 #19
If you use <= Then it will give the wrong value, it will give you the value = the one the record has. Also, it gives you BegivNr and NOT field1, so you cant use my answer as it is!
Avatar billede avalon116 Nybegynder
05. marts 2003 - 21:28 #20
det fungerer ikke
er du sikker på at den oprindelige tabel er T1?
Avatar billede mortrr Praktikant
06. marts 2003 - 09:30 #21
Hvis du mener i
SELECT T1.UserID, T1.BegivNr, DMax("BegivNr","tblTest","UserID = " & [UserID] & " AND BegivNr < " & [BegivNr]) AS Prev
FROM tbltest AS T1;
Så nej. Her er den oprindelige tabel tbltest, som i forespørgslen omdøbes til T1.

Du vil være nødt til at hente felt1 fra både den forrige port, og fra den nuværende. Og hvis den forrige er null, skal du bruge den nuværende.

SELECT T1.UserID, T1.BegivNr, Isnull(DMax("BegivNr","tblTest","UserID = " & [UserID] & " AND BegivNr < " & [BegivNr]),[BegivNr]) AS Prev
FROM tbltest AS T1;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester