ここに私の元のクエリがありました:
SELECT Batting.playerID, SUM(G) as 'G', SUM(AB) as 'AB', SUM(R) as 'R', SUM(H) as 'H', SUM(Doub) as '2B', SUM(Trip) as '3B',
SUM(HR) as 'HR', SUM(RBI) as 'RBI', SUM(SB) as 'SB', SUM(CS) as 'CS', SUM(BB) as 'BB',
SUM(SO) as 'SO', SUM(IBB) as 'IBB', SUM(HBP) as 'HBP', SUM(SH) as 'SH', SUM(SF) as 'SF', SUM(GIDP) as 'GIDP',
Master.nameLast, Master.nameFirst,
FROM Batting
JOIN Master ON Batting.playerID = Master.playerID
WHERE Master.nameLast LIKE @lastname + '%'
GROUP BY Batting.playerID, Master.nameLast, Master.nameFirst
ここに私の新しいクエリがあります:
SELECT Batting.playerID, SUM(G) as 'G', SUM(AB) as 'AB', SUM(R) as 'R', SUM(H) as 'H', SUM(Doub) as '2B', SUM(Trip) as '3B',
SUM(HR) as 'HR', SUM(RBI) as 'RBI', SUM(SB) as 'SB', SUM(CS) as 'CS', SUM(BB) as 'BB',
SUM(SO) as 'SO', SUM(IBB) as 'IBB', SUM(HBP) as 'HBP', SUM(SH) as 'SH', SUM(SF) as 'SF', SUM(GIDP) as 'GIDP',
Master.nameLast, Master.nameFirst, Fielding.POS
FROM Batting
JOIN Master ON Batting.playerID = Master.playerID
JOIN Fielding ON Master.playerID = Fielding.playerID
WHERE Master.nameLast LIKE @lastname + '%'
AND Fielding.POS IN ('C', '1B','2B','3B', 'SS', 'LF', 'RF', 'CF', 'OF', 'DH')
GROUP BY Batting.playerID, Master.nameLast, Master.nameFirst, Fielding.POS
私がしているのは、フィールディング テーブルから pos 列を追加することだけです。合計を取得するには、バッティング テーブルのすべての列を合計する必要がありました。一部の結果では、合計に関連する守備テーブルに複数の POS があります。つまり、誰かが 1 つのポジションで 50 試合を行い、別のポジションで別の 50 試合を持っている場合です。私のクエリは機能しますが、返される数値は途中で数倍になり (最初のクエリよりも 2 番目のクエリの方がはるかに大きくなります)、pos に基づいて複数のレコードを取得しています。何かご意見は?左外部結合を試みましたが、何もしませんでした