---
title: "Knepig SQL-fråga sökes..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/102115-knepig-sql-fråga-sökes"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Jaan"
published: "2004-04-22T12:45:56.000Z"
updated: "2004-04-23T07:23:23.000Z"
replies: 10
views: 339
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/102115-knepig-sql-fråga-sökes"
---

# Knepig SQL-fråga sökes...

## #1 — Jaan, 2004-04-22T12:45Z

Hej.

Jag behöver lite hjälp med en SQL-fråga som jag inte kan få ihop.
Jag vill få ut lite statistik från min DB med fotbollsresultat.

Min DB i Access:

MATCH
\-id
\-resultat

MEMBERS
\-id
\-first_name
\-last_name

GOALS
\-id
\-match_id
\-goal_member_id
\-assist_member_id
\-minute

YELLOW
\-id
\-match_id
\-member_id
\-minute

RED
\-id
\-match_id
\-member_id
\-minute

Jag försöker få ut antal mål och assist för alla spelare som har gjort eller assist.
I en separat fråga vill jag ha ut antal kort (gula och röda) för varje spelare.

Håller på att bli galen, e kass på svåra JOIN frågor.

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

## #2 — Lasp, 2004-04-22T12:56Z

Det där kan väl inte stämma?
Pekar alla id på Match! får du problem nästa gång.
Rött eller gult borde väl vara ett värde lika som minuter?
Händelser är ju Mål, gult eller rött kort.

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

## #3 — PDahlen, 2004-04-22T13:57Z

Du får nog börja med att designa om din databas så att relationerna stämmer.
Om id i Members är matchid så får du problem. Låt members ha en id kolumn och så lägger du till en matchplayers kolumn där du har matchid och lagid. På så sätt får du en koppling till vilka spelare som är med i en match. Du skulle även behöva ha en tabell för lag och en kolumn i members för lagid.
Så här skulle jag designa.

```
MATCH
- matchid
- hometeam
- awayteam

Målen får två tabeller så att det kan vara flera som får assists.

Goals
- goalid
- matchid
- type (1=home, 2=away)
 
GoalPoints
- pointid
- goalid
- memberid
- minute
- type (1=goal, 2=assist)

MEMBERS
-memberid
-first_name
-last_name

Cards
- cardid
- matchid
- cardtype (1=yellow, 2=red)
- member_id
- minute

Teams
- teamid
- teamname

TeamPlayers
- tpid
- teamid
- memberid
```

Man skulle även kunna lägga ihop goals, goalpoints och cards till en Events tabell (eventid, matchid, eventtype, memberid, minute) där eventtype ska vara mål, assist, rött, gult, skada, m.m. När någon gör mål med assist så läggs två rader in.

I en sådan datamodell är det väldigt lätt att få ut all information med några enkla JOIN.

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

## #4 — Jaan, 2004-04-22T13:58Z

Förlåt, glömde match_id.

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

## #5 — Jaan, 2004-04-22T14:15Z

PDahlen:
En sak som du har rätt i är att det vore bra med en separat tabell för assist, hade så först men hade svårt att få ut den informationen jag behövde.

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

## #6 — Jaan, 2004-04-22T21:01Z

PDahlen,
det där med Events kankse kan vara nått. Då kankse man kan få in mål, assist, kort,byten mm i en tabell.

Kanske så här:

Match
\- id
\- result

Events
\- id
\- match_id
\- minute

EventsInfo
\- id
\- event_id
\- event_type
\- member_id
\- event_msg (kan vara bra för resultat mm)

Tänkte att det kan vara bra med EventsdInfo för ett Event kan ha flera members, tex assist eller byten.
Men jag har lite svårt att få ihop SQL-frågan.:OO

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

## #7 — PDahlen, 2004-04-22T23:12Z

Nu börjar du få ihop din databas korrekt.
Ett exempel för att få ut data med JOIN.

```
 SELECT m.id, e.id, e.minute, ei.event_type, ei.member_id, ei.event_msg
 FROM Match e JOIN ( Events e JOIN EventsInfo ei ON e.id = ei.event_id ) ON e.m.id = e.match_id
 ORDER BY e.minute ASC
```

Skulle t.ex få ut alla events i en match i minutordning.
Du kanske ser hur det funkar nu?

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

## #8 — OveRRidE, 2004-04-23T06:33Z

Jag skulle nog rekommendera en koppling mellan en assist och ett mål också, annars känns det lite ryckt ur luften.

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

## #9 — Jaan, 2004-04-23T07:14Z

OveRRidE
Hur menar du? Jag tänkte att om två EventsInfo har samma event_id men event_type är 1 och 2 så är 1=mål och 2=assist.

Men då vill man få ut namnen på både i samma record...

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

## #10 — PDahlen, 2004-04-23T07:18Z

Jaan, det var precis så jag menade.
Override, om man använder Eventstabellen så har man ingen Goals tabell. Goals, Cards, GoalPoints flyter ihop till Events.

> Man skulle även kunna lägga ihop goals, goalpoints och cards till en Events tabell (eventid, matchid, eventtype, memberid, minute) där eventtype ska vara mål, assist, rött, gult, skada, m.m. När någon gör mål med assist så läggs två rader in.

Då kan den även användas till utvisningar och skador.
Ett mål läggs då in på följande sätt:
1\. Den som gör målet läggs in i Events med typid för mål.
2\. Den eller de som får assist läggs in i Events med typid för assist.

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

## #11 — PDahlen, 2004-04-23T07:23Z

Nu kom jag faktiskt på en sak.
Min tanke var ju att kopplingen mellan ett mål och en assist låg i att båda skett i samma matchminut. Men det är ju inte omöjligt att två mål görs i samma matchminut. T.ex. första målet görs efter 23 minuter och 2 sekunder. Sedan görs det ett mål till efter 23 minuter och 56 sekunder. Båda målen hamnar i den 23:e matchminuten. 
För att lösa problemet får man antingen lägga in både minuter och sekunder eller så får man på nåt sätt fixa till en koppling, t.ex. med ParentID som pekar mot ett annat Event. Då skulle ett mål t.ex. få ID 54 och ParentID 0. Målets assist skulle få ID 55 och ParentID 54.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/102115-knepig-sql-fråga-sökes
