Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Rensa i ordermall

Postades av 2003-02-20 09:00:00 - Jörgen Lindroos, i forum databaser, Tråden har 8 Kommentarer och lästs av 835 personer

Jag har ett lite lurigt problem. I mitt bagerisystem ska det finnas en ordermall som vet ungefär vad kunden brukar ta. Ordermallen är ett register som består av ett antal orderrader, varje orderrad har ett kundid och ett datum/tid-fält. Nu är det så att ordermallen måste rensas, dels för att den gör mindre nytta efter ett visst antal rader, dels därför att annars skulle den ständigt växa. Eftersom jag vill att ordermallen ska fungera bra hela tiden så vill jag inte rensa hela ordermallen för en kund. Jag hade tänkt mig ungefär så här: Ordermallen för en kund ska vara max 60 rader stor. Om den är större än 60 ska de äldsta raderna tas bort så att storleken blir 60. Detta ska göras varje gång programmet startas.

Någon ide om hur jag ska lösa det här med SQL?

Jag hade tänkt att arbeta med det här idag, men får jag inte svar idag så får jag arbeta med det när jag kommer på hur man ska göra, eller får svar här.

Tack på förhand!
/Jörgen


Svara

Sv: Rensa i ordermall

Postades av 2003-02-20 09:24:15 - Christoffer Hedgate

DELETE FROM ordermalltabell WHERE kundid = @kundid AND pkid NOT IN (SELECT TOP 60 pkid FROM ordermalltabell WHERE kundid = @kundid ORDER BY datumkolumn DESC)


Svara

Sv: Rensa i ordermall

Postades av 2003-02-20 09:32:49 - Christoffer Hedgate

Fast iofs, en bättre är kanske:

DELETE FROM ordermalltabell
WHERE kundid = @kundid
AND datumkolumn < ALL(SELECT TOP 60 datumkolumn FROM ordermalltabell WHERE kundid = @kundid ORDER BY datumkolumn DESC)


Svara

Sv: Rensa i ordermall

Postades av 2003-02-20 09:45:59 - Jörgen Lindroos

Helt korrekt SQL. Bra!
Snackade med Trash i chatten, och vi löste det på ett annat sätt, genom att ta ordermallen från orderhistoriken. Så här:

select top 60 produkt, count(produkt) as antal, max(datum)
from orderhistorik
where datum >= dateadd(mm,-6,#valfritt datum#)
group by produkt, max(datum)

Inget ordermallsregister alltså.

Nu återstår att se hur det funkar.
/Jörgen


Svara

Sv: Rensa i ordermall

Postades av 2003-02-20 14:00:57 - Christoffer Hedgate

Eh, det där hänger jag inte riktigt med på? Det är ju inte alls samma sak som du frågade efter väl? Det ger dig väl en lista på 60 produkter (i ospecifierad ordning eftersom ingen ORDER BY finns), hur många rader den produkten finns med på (inom det datumintervall man anger) samt det högsta datumet den produkten finns med på. Eller är jag helt snurrig?


Svara

Sv: Rensa i ordermall

Postades av 2003-02-21 18:32:21 - Jörgen Lindroos

Precis som du säger, och Order By behövs inte här. Det fixas senare, i programmet. Det spelar ingen roll för när väl ordermallen är inläst kommer programmet att hoppa runt i ordermallen.

Det som gör det hela lite snurrigt är kanske att jag nu inte har ett extra register för ordermallen utan använder mig av orderhistoriken. Därför behövs ju inga rader tas bort heller.

Det bör tilläggas att om Trash inte hade föreslått den här lösningen så hade nog Christoffers lösning fungerat utmärkt. Men nu löste jag det alltså på det här sättet. SQL'en är dock lite felaktig. Så här ska den vara:

select top 60 produkt, count(produkt) as antal, max(datum)
from orderhistorik
where datum >= dateadd(mm,-6,#valfritt datum#)
group by produkt

Egentilgen är väl kanske datumbegränsningen lite onödig i det här fallet. Men jag tror ordermallen blir mer precis på det sättet.

/Jörgen


Svara

Sv: Rensa i ordermall

Postades av 2003-02-22 23:04:23 - Christoffer Hedgate

OK, men vad jag menade med att det verkar konstigt med att använda TOP 60 utan ORDER BY är att det kan (teoretiskt sett åtminstone) ge olika resultat varje gång den körs. Dessutom tycker jag inte alls den sql-satsen kan användas för att plocka ut vilka produkter en kund ska beställa (som en ordermall), vilket väl är meningen med den?


Svara

Sv: Rensa i ordermall

Postades av 2003-02-23 11:33:40 - Jörgen Lindroos

Jag har testat den, och den fungerar för mig. Dessutom ger den samma resultat varje gång den körs.
Nu har jag inte så jättemånga order inkörda eftersom programmet inte är klart ännu. Därför är det kanske lite svårt att se huruvida ordermallen fungerar.

Jag tar gärna emot ytterligare förslag, men nu ska ordermallen tas ifrån orderhistoriken och inte ett eget register som förut.

/Jörgen


Svara

Sv: Rensa i ordermall

Postades av 2003-02-23 19:41:37 - Christoffer Hedgate

OK, fungerar den så är det nog jag som inte förstått designen riktigt. Behöver den verkligen inte filtrera på kund?

Att den kan ge olika resultat sa jag därför att den innehåller en TOP 60 utan en ORDER BY. Du kommer förmodligen att få samma resultat varje gång, men det finns inget som _garanterar_ det. En mängd är per definition osorterad.


Svara

Nyligen

  • 17:03 Getmancar your go-to carsharing
  • 14:07 Games
  • 17:54 Vegastars New Zealand
  • 16:56 Verde Casino Danmark
  • 13:54 Vegastars: Top Australian Online C
  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 988
27 965
271 785
704
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies