webForumDet fria alternativet

Summera

6 svar · 283 visningar · startad av hammers

hammersMedlem sedan juli 2000101 inlägg
#1

Jag summerar totala antalet mål och poäng från tbl_lineups, och presenterar sedan detta tillsammans med info från tbl_players.

SELECT P.playerID, P.PlayerLName, SUM(L.pPoints) AS TotPts, SUM(L.pGoals) AS TotGls FROM tbl_lineups L
INNER JOIN tbl_players P ON P.playerID = L.playerID
GROUP BY P.playerID

Ex:
ID, Name, TotGls, TotPts
13, Leif, 4, 19
19, Arne, 6, 31

Jag skulle vilja komplettera frågan med poängen från den aktuella omgången, ex:
ID, Name, TotGls, OmgPts, TotPts
13, Leif, 4, 7, 19
19, Arne, 6, 3, 31

Det finns ett fält i tbl_lineups som heter Omg, där omgångens nummer lagras.

Finns det nåt sätt att i samma SQL-fråga få ut "SUM(L.pPoints) WHERE L.Omg = 4"??
Hoppas nån förstår... :q

LarsGMedlem sedan dec. 200012 465 inlägg
#2
SELECT P.playerID, P.PlayerLName, 
            SUM(L.pPoints) AS TotPts, 
            SUM(case when L.Omg = 4 then L.pPoints else 0 end) as pmgPts,
           SUM(L.pGoals) AS TotGls 
FROM tbl_lineups L INNER JOIN tbl_players P 
ON P.playerID = L.playerID
GROUP BY P.playerID,P.PlayerLName
hammersMedlem sedan juli 2000101 inlägg
#3

Funkade klockrent, tack!

En följdfråga: Går det att få med alla spelare som finns i tbl_players, även om de inte finns i tbl_lineups?

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Jo,

SELECT P.playerID, P.PlayerLName, 
            SUM(L.pPoints) AS TotPts, 
            SUM(case when L.Omg = 4 then L.pPoints else 0 end) as pmgPts,
           SUM(L.pGoals) AS TotGls 
FROM tbl_players P  left outer join tbl_lineups L 
ON P.playerID = L.playerID
GROUP BY P.playerID,P.PlayerLName
hammersMedlem sedan juli 2000101 inlägg
#5

Återigen klockrent :)

Tyvärr går det ganska segt när jag kör frågan. Går det snabbare om man indexerar, och vad skulle i så fall behöva indexeras?

Eller finns det möjligen nåt annat sätt att snabba upp den?

SELECT P.playerID, P.PlayerLName, 
            SUM(coalesce(L.pPoints,0)) AS TotPts, 
            SUM(case when L.Gameweek = 12 then L.pPoints else 0 end) as OmgPts,
           SUM(coalesce(L.pGoals,0)) AS TotGls 
FROM tbl_players P left outer join tbl_lineups L 
ON P.playerID = L.playerID
GROUP BY P.playerID,P.PlayerLName
LarsGMedlem sedan dec. 200012 465 inlägg
#6

Ett index på tbl_lineups(playerID) kanske?

Den borde väl i och för sig ingå som första kolumn i primärnyckeln för tbl_lineups?

hammersMedlem sedan juli 2000101 inlägg
#7

Ett index på tbl_lineups(playerID) kanske?
Den borde väl i och för sig ingå som första kolumn i primärnyckeln för tbl_lineups?

Numera gör den det.... Det var jag som hade klantat till primärnyckeln i tbl_lineups.

Ett sjutusans tack för hjälpen!!

Genererad på 383 ms · cache AV · v20260730165559-full.f96bc7eb