webForumDet fria alternativet

subselect/join?

9 svar · 452 visningar · startad av Obbelix

ObbelixMedlem sedan okt. 2002257 inlägg
#1

Hej.

Har två tabeller som ungefär ser ut såhär:

[b]Games:[/b]
id  | hometeam | awayteam
-------------------------
1   | 123      | 125
2   | 126      | 124 
3   | 125      | 123
4   | 127      | 125
5   | 123      | 126

[b]Teams:[/b]
id  | teamname
--------------
123 | AIK
124 | DIF
125 | MIF
126 | FBK
127 | BIF

Nu vill jag ju loopa ut alla matcher med rätt lagnamn och undrar om det går att få ut allt genom en (1) fråga?
Har testat med förjande men den vill inte funka. Fick ut alla matcher men team1/team2 blev "tomma". Använder MSSQL.

SQL = "SELECT *, " &_
      "(SELECT teamname FROM teams WHERE id=hometeam) AS team1, " &_
      "(SELECT teamname FROM teams WHERE id=awayteam) AS team2 " &_
      "FROM games" + några order by etc...
@ndersMedlem sedan juni 200032 969 inlägg
#2
SELECT *, Teams.teamname AS HomeTeam, Teams2.teamname AS AwayTeam FROM Games
INNER JOIN Teams ON Games.hometeam = Teams.ID
INNER JOIN Teams AS Teams2 ON Games.awayteam = Teams2.ID

mvh

ObbelixMedlem sedan okt. 2002257 inlägg
#3

njae... Tyvärr blir det inget resultat alls av detta.

Jag som gör fel eller är inte sql:en korrekt? Enda jag gjort är att ändra kolumnamnen så de blev rätt (kortade ner som i mitt första inlägg).

ObbelixMedlem sedan okt. 2002257 inlägg
#4

Aj då. Jag som förklarat fel. är visst rätt snurrig på det här.

Har ju ytterligare en tabell så db-upplägget är såhär:

[b]Games:[/b]
id  | hometeam | awayteam
-------------------------
1   | 123      | 125
2   | 126      | 124 
3   | 125      | 123
4   | 127      | 125
5   | 123      | 126

[b]Groupteams:[/b]
id  | team_id
--------------
123 | 10
124 | 11
125 | 12
126 | 13
127 | 14

[b]Teams:[/b]
id  | teamname
--------------
10 | AIK
11 | DIF
12 | MIF
13 | FBK
14 | BIF

Går det att få ut det jag vill när det ser ut såhär?

@ndersMedlem sedan juni 200032 969 inlägg
#5

Varför har du groupteams-tabellen? Den verkar onödig.

(Men ja, det går att lösa även med den)

ObbelixMedlem sedan okt. 2002257 inlägg
#6

Kom på det själv till slut :)

SELECT g.*, gt1.team_id, gt2.team_id, t1.teamname AS teamhome, t2.teamname AS teamaway FROM games g 
INNER JOIN groupteams gt1 ON gt1.id = g.hometeam
INNER JOIN teams t1 ON gt1.team_id = t1.id
INNER JOIN groupteams gt2 ON gt2.id = g.awayteam
INNER JOIN teams t2 ON gt2.team_id = t2.id

/RED: Tabellen finns där för att ett lag kan/kommer spela i flera grupper och för att kunna lista grupperna behövs väl den extratabellen, eller?
Håller på med ett turnerings-system som bygger först på grundspel i olika grupper, sen slutspel mm i nya grupper osv..

@ndersMedlem sedan juni 200032 969 inlägg
#7

Så ett lag kan ha x antal olika ID:n i tabellen Games?

ObbelixMedlem sedan okt. 2002257 inlägg
#8

Nej, det kan det inte... Nu blev jag osäker. hmmm.

Det hela bygger på en huvudturnering där man lägger till lag, arenor etc. Sen skapar man grupper och väljer vilka lag som ska ingå i den gruppen. Sen skapar man slutspelet där man säger vilka lag som ska ingå i gruppen utifrån grupp och placering i grudspel. Man definerar alltså slutspelet i förväg och kan således inte veta vilket lag som ska spela vart utan bara att i ett visst slutspel ska vinnaren + trean i grupp 1 spela tillsammans med tvåan och fyran från grupp 2 tex. Nånstans i det tänket kom jag fram till att en separat tabell som bara har koll på grupp-id och lag-id var nödvändig. Men ju mer jag tänker på det nu, blir det mer tveksamt.
Var du tvungen att ställa en sån fråga? :)

@ndersMedlem sedan juni 200032 969 inlägg
#9

Det kan säkert vara bra att ha grupp-id och lag-id i en separat tabell, men ska du verkligen behöva blanda in den här? Borde det inte duga alldeles utmärkt att lagra lag-id direkt i matchtabellen?

Var du tvungen att ställa en sån fråga?

Ja, tydligen. ;)

mvh

ObbelixMedlem sedan okt. 2002257 inlägg
#10

Nja... När man lagt till lag i en grupp ska ju spelschema genereras utifrån endast de lag man valt ska ingå i gruppen. Och det skulle man väl aldrig kunna göra utan denna tabellen?

Jaja. nu fungerar det ju så jag kör på det :)

Tack för hjälpen för den hjälpte mig att komma på hur det skulle bli.

137 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)