25. august 2010 - 11:32Der 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.
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;
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]));
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.
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.
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.
no problem. You decide which answer you use not me so jensriis gets the points :o)
And I have a few already
Synes godt om
Ny brugerNybegynder
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.