Avatar billede sober Novice
25. august 2010 - 11:32 Der er 12 kommentarer og
1 løsning

Tabel med intervaller. Hvordan kan den bruges i forespørgsel

Hej
Jeg har oprettet en tabel med varebeholdninger.
Indeholder varenr, FraDato, TilDato og Beholdning.
Der kan være mange dage eller én dag mellem fra/til dato.

Jeg vil gerne oprette en simpel forespørgsel, som ud fra en
anden tabel med dato og varenr skal kunne finde beholdningen på den ønskede dato.

Har overvejet at få "udfyldt" min varebeholdningstabel, således at alle datoer figurerer på hver sin linje, men så bliver den stor. Ved ikke lige hvordan jeg gør dette.

Alternativt og bedre, at få konstrueret en forspørgsel der kan håndtere intervallerne.

Nogen ide ?

MVH
Sober
Avatar billede terry Ekspert
25. august 2010 - 12:00 #1
Something like this should work


SELECT VareNummer, Dato, (SELECT BEHOLDNING FROM tblVareBeholdning B WHERE B.VareNummer = tblVareDato.VareNummer AND (tblVareDato.Dato BETWEEN B.StartDato AND B.SlutDato)) AS BEHOLDNING
FROM tblVareDato;
Avatar billede jensen363 Forsker
25. august 2010 - 12:03 #2
Der er forskellige muligheder for gruppering i forhold til dato

    -  summeret på uge nr
    -  summeret på måneds nr
    -  summeret på kvartaler
    -  o.s.v

er det sådam noget du er ude efter ???
Avatar billede jensriis Novice
25. august 2010 - 12:08 #3
SELECT varebeholdninger.varenr, varebeholdninger.fradato, varebeholdninger.tildato, varebeholdninger.beholdning
FROM varebeholdninger INNER JOIN Søgetabel ON varebeholdninger.varenr = Søgetabel.varenr
WHERE (((varebeholdninger.fradato)<=[søgetabel].[søgedato]) AND ((varebeholdninger.tildato)>=[søgetabel].[søgedato]));
Avatar billede sober Novice
25. august 2010 - 12:09 #4
Hej Jensen363.
Nej - jeg er ikke ude efter at gruppere.
Mit problem er, at jeg skal søge i den tabel, der er konstrueret med intervaller og at jeg nogle gange skal søge en værdi ud efter en dato, der ligger midt i intervallet.
Går intervallet fx fra 1 maj til 5 maj kan det være at jeg vil finde 3 maj. 3 maj er lig med 1 maj fordi, beholdningen er den samme i intervallet.
Avatar billede jensriis Novice
25. august 2010 - 12:29 #5
Det er jo netop hvad mit eksempel gør
Avatar billede sober Novice
25. august 2010 - 12:39 #6
Hej JensRiis
jeg er ved at afprøve dit forslag.
jeg er ikke så vant til at skrive SQL kode. Plejer at klare mig med DesignMode.
Avatar billede terry Ekspert
25. august 2010 - 12:51 #7
Hvad er der i vejen med
Skrevet ons. d. 25. august 2010 kl. 12:00:09| #1

?
Avatar billede jensriis Novice
25. august 2010 - 13:05 #8
Hej

Du skal bare når du er ved at designe din nye query vælge sql

så kan du paste koden ind

Tabel og feltnavne skal selvfølgelig rettes til de rigtige.

Terry - der er intet i vejen med dit forslag. Det vil sandsynligvis give samme resultat.
Det er en smagssag om man som du vil bruge subselects eller som jeg inner join. Måske et performance issue ved større datamængder.
Avatar billede sober Novice
25. august 2010 - 14:15 #9
HejTerry.
Jeg kender inner join udtrykket og kunne bedre læse jensriis' kode.

Til Jensriis:
Det virker fint.
Jeg kan se, at jeg har lavet en fejl i min grundtabel med beholdning.
Jeg skulle have trukket 1 dag fra min Tildato. Og nu kan jeg ikke lige finde ud af, at få det til at virke
Tildato feltet er oprettet som et datofelt.
Måske du kan hjælpe.

MVH
Sober
Avatar billede sober Novice
25. august 2010 - 14:31 #10
Hej JensRiis
Har fået løst mit problem.
Vil du lave et svar, så jeg kan give point.
Tak for hjælpen
Sober
Avatar billede jensriis Novice
25. august 2010 - 15:04 #11
svar - men det kunne ligesågodt have været terry
Avatar billede sober Novice
25. august 2010 - 15:07 #12
Ja, det er jeg med på. Måske skulle jeg have dele point.
Undskyld Terry !
Avatar billede terry Ekspert
25. august 2010 - 16:15 #13
no problem. You decide which answer you use not me so jensriis gets the points :o)

And I have a few already
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

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