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


Utränkning Stored Procedure...

Postades av 2004-04-21 09:07:50 - Tomas Johansson, i forum sql-server/msde, Tråden har 1 Kommentarer och lästs av 698 personer

För alla som spelar golf så vet ni att det finns något som heter Greenträff, dvs rätt antal slag till green. Detta kan man räkna ut på följande sätt.

om (slag - puttar) <= (par - 2) så har man en greenträff.
Jag har data lagrat i en SQL db och skulle vilja slippa uträkningen nedan och hämta statistiken via en lagrad procedur.

I Db har jag bla. fälten
slag_hål_1 till slag_hål_18
puttar_hål_1 till puttar_hål_18
par_hål_1 till par_hål_18
data_id = key

------
detta är mitt gamla sätt som jag skrivit direkt på asp sidan. (info. gir=greenträff)

------ ------
gir = 0

for i = 0 to 17
if (array_slag(i) - array_puttar(i)) <= (array_par(i) - 2)
then gir = gir + 1
else
gir = gir
end if
next
------ ------

nu vill jag göra samma sak fast med en stored procedure...

Tack på förhand!!


Svara

Sv: Utränkning Stored Procedure...

Postades av 2004-04-21 20:01:53 - Per Hultqvist

Jag skulle i första hand föreslå en designändring av databasen enligt nedan :

Först en tabell som innehåller information om vilken runda det handlar om (vilken bana, datum, med/motspelare, väderlek, o dyl) :
<info>
Tabell : Runda
-----------------------------------------------
id int 4 Not null (Identity, Primary key)
Datum datetime 8 Not null
Bana varchar 50 Not null
</info>
Sedan en tabell för varje hål under rundan. Det kommer alltså att bli 18 poster per runda i denna tabell.
<info>
Tabell : Hål
----------------------------------------------------
id int 4 Not null (Identity, Primary key)
RundaID int 4 Not null
Slag int 4 Not null
Putt int 4 Not null
Par int 4 Not null
HålNr int 4 Not null
</info>
Här kommer lite exempel data för tabellen Hål (5 första hålen på runda med id=1)
<info>
id RundaID Slag Putt Par HålNr
--------------------------------------------------------------------
1 1 5 2 3 1
2 1 4 1 3 2
3 1 6 3 5 3
4 1 3 1 3 4
5 1 3 1 4 5
</info>
Slutligen godbiten som räknar ut greenträff för en runda (rundan med id=1):
<info>
select sum(CASE WHEN (Slag-Putt-Par+2)>0 THEN 1 ELSE 0 END) FROM Hål WHERE RundaID=1
</info>

Egentligen skulle det även behövas en tabell "ovanför" Runda som heter Tävling eftersom en tävling kan bestå av flera rundor. Dessutom bör man kanske lagra information om banorna (och dess hål/par/längd) och information om slagen i en specifik runda på den banan separat för att normalisera det korrekt. Men det blir för mycket att skriva här...Min poäng är helt enkelt att du nog bör se över databasdesignen om det inte är för sent...

[EDIT : Ber om ursäkt för att formateringen inte blev så bra...hoppas du kan reda ut det i alla fall]

[EDIT 2 : ] Om det är för sent att ändra databasdesignen så är en lösning att skriva en lång SQL-sats enligt nedan :
<info>
select (CASE WHEN (Slag_Hål1-Putt_Hål1-Par_Hål1+2)>0 THEN 1 ELSE 0 END) +
(CASE WHEN (Slag_Hål2-Putt_Hål2-Par_Hål2+2)>0 THEN 1 ELSE 0 END) +
(CASE WHEN (Slag_Hål3-Putt_Hål3-Par_Hål3+2)>0 THEN 1 ELSE 0 END) +
...
...
(CASE WHEN (Slag_Hål18-Putt_Hål18-Par_Hål18+2)>0 THEN 1 ELSE 0 END) AS Antal_GreenTraff
FROM ....
</info>
Inte speciellt snyggt men det borde fungera...


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

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 569 619
27 953
271 709
576
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