Om du har behov av att kunna uppdatera lagNamn så skall du använda ett Lagid i Matchtabellen, annars går det på ett ut.
Om det är bra annars beror på vilken information du vill kunna plocka ut.
Vad har detta med subselect att göra?
7 svar · 218 visningar · startad av icaaq
jag håller på att lägga in massa innebandymatcher i ett dbms(mySQL) och jag undrar nu om detta är ett bra sätt.
jag har en tabell (t_lag) med alla lag:
LagID!LagNamn!osv!osv
---------------------
1!AIK!osv!osv
och sen har jag en tabell (t_matcher) med alla matcher och dylikt.
MatchID!Hemmalag!Bortalag!osv
Är det bättre att lägga in lagID istället LagNamn i tabellen med matcherna?
Om du har behov av att kunna uppdatera lagNamn så skall du använda ett Lagid i Matchtabellen, annars går det på ett ut.
Om det är bra annars beror på vilken information du vill kunna plocka ut.
Vad har detta med subselect att göra?
Vad har detta med subselect att göra?
Jag tänkte ställa fler frågor i det första inlägget, men då gör jag det nu istället.....
om jag kör med lagID i match tabellen då blir det ju en hel del selectsatser när jag ska visa alla matcherna i en serie....
jag har en tanke om hur det ska se ut men rätta mig om den är fel:
strSQL = "SELECT hemmalag, bortalag from t_matcher "&_
"WHERE serie = '"&strSerie&'"
Set ObjRS = ObjConn.Execute(strSQL)
If ObjRS.EOF Then
'inga matcher
Else
Do until ObjRS.EOF
strSQL2 = "SELECT LagNamn t_lag "&_
"WHERE LagID = "&ObjRS("hemmalag")&"
Set ObjRS2 = ObjConn.execute(strSQL2)
If ObjRS2.EOF Then
'nått blev fel
Else
'skriv ut hemmalagets info
End If
strSQL3 = "SELECT LagNamn t_lag "&_
"WHERE LagID = "&ObjRS("Bortalag")&"
Set ObjRS3 = ObjConn.execute(strSQL3)
If ObjRS3.EOF Then
'nått blev fel
Else
'skriv ut Bortalagets info
End If
ObjRS.Movenext
Loop
End If
är detta rätt tänkt eller går det att göra smidigare? 
Det går att göra så att du får ut all information i en fråga
SELECT h.lagNamn as hnamn,
h.x as hx,
h.y as hy,
b.lagnamn as bnamn,
b.x as bx,
b.y as by
from t_lag as h join t_matcher
on h.lagid = hemmalag join
t_lag as b on bortalag = b.lagid
where serie = 'Serie 4711'
red: syntaxfel i sql.
Vet du att det går att göra så här i mySQL??
Jag är ganska säker på att det fungerar även i Mysql.
nu har jag denna.
SELECT h.F_LAG_NAMN as hnamn,
b.F_LAG_NAMN as bnamn
from t_lag as h join t_match on h.f_lag_id = f_hemmalag
join t_lag as b on f_bortalag = b.lagid where f_serie_namn = 'haha'
men jag får
You have an error in your SQL syntax near 'on h.f_lag_id = f_hemmalag
join t_lag as b on f_bortalag = b.lagid where f_serie'
...jag fattar ju inget av detta så vad kan vara fel?
Något syntax-fel är det inte (inte enligt standard sql i alla fall).
Det beror nog mer på någon brist i Mysql. Om du testar med att kvalificera alla kolumnreferenser då
SELECT h.F_LAG_NAMN as hnamn,
b.F_LAG_NAMN as bnamn
from t_lag as h join t_match as t on h.f_lag_id = t.f_hemmalag
join t_lag as b on t.f_bortalag = b.lagid where t.f_serie_namn = 'haha'