---
title: "Hjälp med sql-fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/73720-hjälp-med-sql-fråga"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "andreas_lindh"
published: "2003-04-10T18:11:08.000Z"
updated: "2003-04-11T15:14:05.000Z"
replies: 10
views: 343
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/73720-hjälp-med-sql-fråga"
---

# Hjälp med sql-fråga

## #1 — andreas_lindh, 2003-04-10T18:11Z

Jag har en sqlfråga för att skapa tabeller för ishockeyserier
Sql-frågan har jag hittat i forumet på pellesoft

tabellerna ser ut så här
Tabell: tblLag
Fält: LagID
Fält: LagNamn

Tabell: tblMatcher
Fält: MatchID
Fält: MatchLag1
Fält: MatchMål1
Fält: MatchLag2
Fält: MatchMål2

Frågan

```
SELECT [tblLag].[LagID], [tblLag].[LagNamn], 
Count([tblMatcher].[MatchId]) AS Antal, 
-Sum(([tblLag].[LagID]=[tblMatcher].[MatchLag1] 
And [tblMatcher].[MatchMål1]>[tblMatcher].[MatchMål2]) 
Or ([tblLag].[LagID]=[tblMatcher].[MatchLag2] 
And [tblMatcher].[MatchMål1]<[tblMatcher].[MatchMål2])) AS Vinster, 
-Sum([tblMatcher].[MatchMål1]=[tblMatcher].[MatchMål2]) AS Oavgjort, 
-Sum(([tblLag].[LagID]=[tblMatcher].[MatchLag1] 
And [tblMatcher].[MatchMål1]<[tblMatcher].[MatchMål2]) 
Or ([tblLag].[LagID]=[tblMatcher].[MatchLag2] 
And [tblMatcher].[MatchMål1]>[tblMatcher].[MatchMål2])) AS Förluster,
((vinster*2)+oavgjort) AS poang
FROM tblLag LEFT JOIN tblMatcher ON ([tblLag].[LagID]=[tblMatcher].[MatchLag1]) 
Or ([tblLag].[LagID]=[tblMatcher].[MatchLag2])
GROUP BY [tblLag].[LagID], [tblLag].[LagNamn]
ORDER BY 7 DESC;
```

Någon som vet hur jag ska göra för att räkna ut antalet plus och minusmål och målskillnad?

Permalänk: https://www.webforum.nu/p/73720

## #2 — LarsG, 2003-04-10T19:06Z

Jag rensade lite guck

```
SELECT LagID, 
       LagNamn, 
       Count(MatchId) AS Antal, 
       -Sum((LagID=MatchLag1 And MatchMål1 > MatchMål2 ) 
        Or (LagID=MatchLag2 And MatchMål1<MatchMål2)) AS Vinster, 
       -Sum(MatchMål1=MatchMål2) AS Oavgjort,
       antal - Vinster - Oavgjort as Förluster ,
       vinster*2 + oavgjort AS poang,
       -Sum((LagID=MatchLag1)*MatchMål1 + (LagID=MatchLag2)*MatchMål2) as plusmål,
       -Sum((LagID=MatchLag1)*MatchMål2 + (LagID=MatchLag2)*MatchMål1) as minusmål,
       plusmål - minusmål as målskillnad
FROM tblLag LEFT JOIN tblMatcher 
  ON (LagID=MatchLag1 Or LagID = MatchLag2)
GROUP BY LagID, LagNamn
ORDER BY 7 DESC
```

Permalänk: https://www.webforum.nu/p/1007899

## #3 — andreas_lindh, 2003-04-10T19:41Z

Tack. Men när jag testar den i access får jag felet.
Kopplingsuttrycket stöds inte.
Den klagar på
ON (LagID=MatchLag1 Or LagID = MatchLag2)

Permalänk: https://www.webforum.nu/p/1007927

## #4 — LarsG, 2003-04-10T19:48Z

Om du går tillbaka till det ursprungliga villkoret då?

```
ON (LagID=MatchLag1) Or (LagID = MatchLag2)
```

Jag blir aldrig klok på Access och när man får/måste använda parenteser eller inte.

Permalänk: https://www.webforum.nu/p/1007932

## #5 — andreas_lindh, 2003-04-10T20:19Z

Tyvärr. Ger samma fel

Permalänk: https://www.webforum.nu/p/1007952

## #6 — LarsG, 2003-04-10T20:30Z

Om du helt och hållet använder det ursprungliga då?

```
ON ([tblLag].[LagID]=[tblMatcher].[MatchLag1]) 
Or ([tblLag].[LagID]=[tblMatcher].[MatchLag2])
```

Den frågan har väl fungerat?

Permalänk: https://www.webforum.nu/p/1007962

## #7 — andreas_lindh, 2003-04-10T21:40Z

Tack. Nu fungerar det :)

Permalänk: https://www.webforum.nu/p/1008023

## #8 — andreas_lindh, 2003-04-11T09:54Z

En ny fråga. 
Hur mycket behöver ändras för att den här frågan ska fungera med mySQL?

Permalänk: https://www.webforum.nu/p/1008318

## #9 — LarsG, 2003-04-11T13:19Z

```
SELECT LagID, 
       LagNamn, 
   @antal :=    Count(MatchId) AS Antal, 
   @vinster := 
       Sum((LagID=MatchLag1 And MatchMål1 > MatchMål2 ) 
        Or (LagID=MatchLag2 And MatchMål1<MatchMål2)) AS Vinster, 
   @oavgjort := 
      Sum(MatchMål1=MatchMål2) AS Oavgjort,
       @antal - @Vinster - @Oavgjort as Förluster ,
       @vinster*2 + @oavgjort AS poang,
    @plusmal := 
       Sum((LagID=MatchLag1)*MatchMål1 + (LagID=MatchLag2)*MatchMål2) as plusmål,
    @minusmal :=
       Sum((LagID=MatchLag1)*MatchMål2 + (LagID=MatchLag2)*MatchMål1) as minusmål,
       @plusmal - @minusmal as målskillnad
FROM tblLag LEFT JOIN tblMatcher 
  ON LagID=MatchLag1 Or LagID = MatchLag2
GROUP BY LagID, LagNamn
ORDER BY 7 DESC
```

Permalänk: https://www.webforum.nu/p/1008486

## #10 — andreas_lindh, 2003-04-11T13:26Z

Tack.
Fungerar perfekt :)

Permalänk: https://www.webforum.nu/p/1008498

## #11 — andreas_lindh, 2003-04-11T15:14Z

Ett litet problem. jag har nu anpassat frågan till mina riktiga tabeller. Problemet är att målskillnad och poäng tas från det sämsta laget och blir samma för alla lag
frågan

```
SELECT s_deltagande_lag.ID, s_deltagande_lag.Namn,s_deltagande_lag.serie_id,
@games := Count(s_matcher.ID) AS games,
@win := Sum((s_deltagande_lag.ID=s_matcher.lagid_a 
And s_matcher.resultat_a > s_matcher.resultat_b )Or (s_deltagande_lag.ID=s_matcher.lagid_b 
And s_matcher.resultat_a < s_matcher.resultat_b)) AS win,
@tie := Sum(s_matcher.resultat_a=s_matcher.resultat_b) AS tie,
@games - @win - @tie as lost , @win*2 + @tie AS poang,
@plus := Sum((s_deltagande_lag.ID=lagid_a*s_matcher.resultat_a + (s_deltagande_lag.ID=s_matcher.lagid_b)*s_matcher.resultat_b) as plus,
            @minus := Sum((s_deltagande_lag.ID=s_matcher.lagid_a)*resultat_b + (s_deltagande_lag.ID=s_matcher.lagid_b)*s_matcher.resultat_a) as minus,
            @plus - @minus as plusminus FROM s_deltagande_lag LEFT JOIN s_matcher ON (s_deltagande_lag.ID=s_matcher.lagid_a) Or (s_deltagande_lag.ID=s_matcher.lagid_b)
            where(s_deltagande_lag.serie_ID = 2)
            GROUP BY s_deltagande_lag.ID, s_deltagande_lag.Namn ORDER BY 8 DESC ,11 desc, 9 desc, 10 desc
```

Permalänk: https://www.webforum.nu/p/1008579

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/73720-hjälp-med-sql-fråga
