簡體   English   中英

MySQL:多個連接及其對總和的影響

[英]MySQL: Multiple joins and their effect on sums

我正在嘗試連接多個表並使用SUM命令,當我加入多個表時,我無法使SUM正常工作。 從我在這個主題上所做的(這里和其他地方)的閱讀,我相當確定解決方案是在我加入之前求和,但我很難完成這項工作。

如果我運行以下代碼,只加入兩個表,它可以完美地運行:

SELECT CONCAT(m.nameFirst, " ",m.nameLast) AS Name, sum(b.g) AS G,sum(b.ab) AS AB, sum(b.h) AS H, sum(b.hr) AS HR, sum(b.sb) AS SB, sum(b.bb) AS BB, ROUND(sum(b.h)/sum(b.ab), 3) AS BA, ROUND((sum(b.h)+sum(b.bb)+sum(b.hbp))/(sum(b.ab)+sum(b.bb)+sum(b.hbp)+sum(b.sf)), 3) AS OBP, ROUND((sum(b.h)+sum(b.2b)+2*sum(b.3b)+3*sum(b.hr))/sum(b.ab), 3) as SLG
FROM Master m
JOIN Batting b on m.playerID = b.playerID
WHERE birthMonth = 6 and birthDay = 15
Group by b.playerID
ORDER by b.h DESC

如果我這樣做,在連接中添加第三個表,它會破壞總和:

SELECT CONCAT(m.nameFirst, " ",m.nameLast) AS Name, sum(b.g) AS G,sum(b.ab) AS AB, 
[exact same code as above removed for the sake of brevity]
sum(p.W) as WINS
FROM Master m
left JOIN Batting b on m.playerID = b.playerID
left join Pitching p on m.playerID = p.playerID
WHERE birthMonth = 6 and birthDay = 15
Group by m.playerID
ORDER by b.h DESC

正如我所說,我很確定解決方案是在連接之前求和。 我該怎么做呢?

提前致謝。

一種技術是總結表格,然后在這些表格上加入。

SELECT CONCAT(m.nameFirst, " ",m.nameLast) AS Name
    , b.G AS G, b.AB AS AB
    , p.W as WINS
FROM Master m
LEFT JOIN 
  (SELECT playerID, SUM(g) AS G, SUM(ab) AS AB
   FROM Batting
   GROUP BY playerID) AS b
    ON m.playerID = b.playerID
LEFT JOIN 
   (SELECT playerID, sum(W) AS WINS
    FROM Pitching
    GROUP BY playerID) AS p 
  ON m.playerID = p.playerID
WHERE birthMonth = 6 and birthDay = 15

您始終可以將子查詢移動到SELECT結構中

SELECT CONCAT(m.nameFirst, " ",m.nameLast) AS Name
    , (SELECT SUM(g)
       FROM Batting AS b
       WHERE m.playerID = b.playerID) AS G
    , (SELECT SUM(ab)
       FROM Batting
       WHERE m.playerID = b.playerID) AS AB
    , (SELECT sum(W)
       FROM Pitching AS p
       WHERE m.playerID = p.playerID) AS WINS
FROM Master m
WHERE birthMonth = 6 and birthDay = 15

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM