webForumDet fria alternativet

Datumhjälp

Databaser & SQL

1 svar · 187 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Hej!

Jag har flera fält i en MSSQL 7.0 db där priset är beroende på om datumet som är inmatat är "närmast" passerat.

struktur

artikelnr
artikeltext
prisdatum1
prisdatum2
forsaljningspris1
forsaljningspris2

Jag skulle vilja ha hjälp med en selectsats som jag inte får att gå ihop:

Om prisdatum1 eller prisdatum2 är närmast passerat datum utifrån dagens datum, så ska det priset gälla (forsaljningspris1 eller forsaljningspris2)

Går det att klämma in nåt sånt i en SELECT-sats? Jag har fastnat...

red. Löste det i ASP istället med "DatePart"

Medlem sedan maj 20012 812 inlägg
#2

Du stötter på detta problem eftersom din databasdesign inte är korrekt.

Om du istället hade flyttat ut priset till en egen tabell så hade du aldrig fått något problem.

Så här:

tblArtikel
-----------------------------
ID|ArtikelText|.....

tblArtikelPris
----------------------------------
ID|IDArtikel|Pris|Datum

Nu när du uppdaterar priset så hamlar det i tabellen ArtikelPris och man kan enkelt hämta det senaste priset, eftersom du då tar den post som är sist inmatad för just detta ArtikelID. Om du bygger ut kolumnen med 2 datum fält. StarDate och EndDate så kan du använda dessa för att hitta rätt pris, och då kan du enkelt mata in priset flera veckor iförväg om du vill, du kan även hitta rätt pris vid ett givet datum.

Men som sagt, det kräver att du tänker om på din databasdesign. Kolumnen som dina prisdatum1 och prisdatum2 skall aldrig uppsåt i en tabell då har man en felaktig databasdesign. Man kan ha det som du om man vet vad man sysslar med :)

- Magnus

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)