Avatar billede nlbgf Nybegynder
19. marts 2001 - 09:52 Der er 8 kommentarer og
2 løsninger

Simpel DELETE?

Jeg har følgende SQL sætning:

SELECT
    Udstyr, MIN(MinTid) AS MinTid, MAX(MaxTid) AS MaxTid, SUM(StopTid) AS StopTid, Taeller
FROM
    MaskinStop
WHERE
    MaxTid > GETDATE() - 1
GROUP BY
    Udstyr, Taeller

Det sætningen gør er at finde starttidspunktet (MinTid) samt sluttidspunktet (MaxTid) samt den samlede stoptid for nogle produktionsudstyr.

Nu vil jeg så gerne have, at alle de records, som er blevet \"slået sammen\" bliver slettet fra MaskinStop-tabellen. Altså alle records hvor MinTid > MIN(MinTid) og MaxTid < MAX(MaxTid). Hvordan gør jeg det?
Avatar billede proaccess Nybegynder
19. marts 2001 - 10:16 #1
Du skal være opmærksom på også at opdatere StopTid, da du ellers ikke vil få den rigtige sum af denne !!!  (hvis du sletter datagrundlaget)

ProAccess
Avatar billede nlbgf Nybegynder
19. marts 2001 - 10:27 #2
proaccess>> Opdatere StopTid? Jeg er ikke helt sikker på, jeg forstår hvad du mener. Jeg får vel den samlede StopTid fra MIN(MinTid) til MAX(MaxTid)?
Avatar billede proaccess Nybegynder
19. marts 2001 - 10:33 #3
I øjeblikket bruger du en GROUP BY, hvor du laver en SUM(StopTid), hvis du så sletter de records, hvor StopTid er andet end 0, så får du et andet resultat... Håber dette er klar tale??

Hvis du vil beregne den samlede StopTid, som MaxTid-MinTid, så er det en anden sag.

ProAccess
Avatar billede nlbgf Nybegynder
19. marts 2001 - 10:51 #4
Okay - jeg tror jeg er med. StopTid er tidligere blevet beregnet som antal minutter (MaxTid-MinTid).

Problemet er, at der hver time bliver indsat records som fortælle hvor lang tid de forskellige udstyr har stået stille (StopTid), samt i hvilket tidsrum (MinTid til MaxTid). Hvis et udstyr så står stille i mere end en time kommer der jo flere records i tabellen. Med ovenstående SQL sætning vil jeg så slå dem sammen til et enkelt stop. Når jeg så gør det, behøver jeg selvfølgelig ikke alle de records som nu er blevet lagt sammen til et enkelt.

Forstået? Ellers må du jo sige til...
Avatar billede nlbgf Nybegynder
20. marts 2001 - 07:45 #5
Hjælper flere points?
Avatar billede nlbgf Nybegynder
20. marts 2001 - 08:47 #6
Kom nu proaccess, kan du ikke hjælpe?
Avatar billede proaccess Nybegynder
20. marts 2001 - 12:25 #7
Det er ikke så meget pointene, men mere opgaven som giver mig problemer... ;-)

Du har en tabel med tider, som du vil \"slå sammen\", men du har bare det problem at selv om du fjerner de mellemliggende records, så vil du stadig have 2 records pr. stop.

Et hvor MinTid = Den mindste tid og een hvor MaxTid = Den største tid, de ligger jo ikke i samme record, derfor er du nødt til at lave et eller andet, som involverer flere forespørgseler; Ihvertfald een UPDATE og een DELETE, som skal køres i en procedure.

Jeg kender ikke til MS SQL, og kan derfor ikke gå i en mere præcis dialog på dette emne.

Jeg håber dog at have bragt dig tættere på målet.
Avatar billede nlbgf Nybegynder
20. marts 2001 - 15:49 #8
Det hjalp desværre ikke så meget :-( Men du må meget gerne smide et svar, så får du lige lidt...

Jeg har gjort det på en anden (og måske lidt dummere) måde. Jeg har lavet en hjælpetabel hvor jeg så slå stoppene sammen i direkte fra MaskinStop-tabellen. Derefter sletter jeg de gamle stop fra MaskinStop-tabellen og sætter alle de \"sammenslåede\" records ind i MaskinStop. Thats it...

Men kom lige med et svar, så får du et par points...
Avatar billede proaccess Nybegynder
20. marts 2001 - 15:57 #9
Jeg prøvede i det mindste...  ;-(

Avatar billede nlbgf Nybegynder
20. marts 2001 - 15:58 #10
Tak for hjælpen...
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
Computerworld tilbyder specialiserede kurser i database-management

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