2015-11-05 90 views
0

我有一张表格,内容如下:http://i.stack.imgur.com/zH2zz.png
此表适用于曲棍球联盟(Link Here)。这是统计数据将在数据库中保存的第二个赛季。如果您选择链接中的下拉菜单,您会看到我可以在两个季节中生成前20个列表(1个季节除1个测试程序外没有数据)。目标是总计两个赛季,并有一个历史排名前20的名单。我曾尝试使用总和功能,但确实将每一行添加到1.
添加2个或更多不同行的列值。 SQL

我只想总结重复玩家ID的行。例如,我是玩家ID#2,我需要每个目标并协助添加包含我的PID的每行,但是我需要为1个查询中的所有前20位玩家提供此信息。以下是我目前使用的一些查询。

SELECT Rosters.PID, Rosters.Goals, Rosters.Assists, Rosters.PIM, Rosters.Num, Rosters.TID, Players.pid, Players.firstname, Players.lastname, 
     (Rosters.Goals + Rosters.Assists) AS Points 
     FROM Rosters 
     INNER JOIN Players 
     ON Rosters.PID = Players.pid 
     WHERE Rosters.TID BETWEEN $parameter 
     ORDER BY Points DESC, Goals DESC 
     LIMIT 0,20 

$parameter是基于团队的ID(TID)有16个工业贸易署(8每个季节)。这个查询获取所有的记录,当参数是1-16时,它只是不通过PID加上非独特的行(这最终是我想要学的)。这倒说明如何查询被实例化

<div class="ddstyle"> 
    <select name="DropDownTeams" id="DDTeams"> 
     <option>Select a Season</option> 
     <option value="stats2.php?tid=9 AND 16">2015-2016</option> 
     <option value="stats2.php?tid=1 AND 8">2014-2015</option> 
     <option value="stats2.php?tid=1 AND 16">All Time</option> 
    </select> 
</div> 

我试图做的下降:

SELECT Rosters.PID, SUM(Rosters.Goals) Goals, SUM(Rosters.Assists) Assists, SUM(Rosters.PIM) PIM, Rosters.Num, Rosters.TID, Players.pid, Players.firstname, Players.lastname, 
    SUM((Rosters.Goals + Rosters.Assists)) AS Points 
    FROM Rosters 
    INNER JOIN Players 
    ON Rosters.PID = Players.pid 
    WHERE Rosters.TID BETWEEN 1 AND 16 
    ORDER BY Points DESC, Goals DESC 
    LIMIT 0,20; 

但是,这只是增加了每个记录成一排。当使用SUM()函数时,Where子句显然不像我想要的那样工作。

回答

1

附上Group BY部分http://www.w3schools.com/sql/sql_groupby.asp

SELECT Rosters.PID 
    ,SUM(Rosters.Goals) Goals 
    ,SUM(Rosters.Assists) Assists 
    ,SUM(Rosters.PIM) PIM 
    ,Players.pid 
    ,SUM((Rosters.Goals + Rosters.Assists)) AS Points 
FROM Rosters 
INNER JOIN Players ON Rosters.PID = Players.pid 
WHERE Rosters.TID BETWEEN 1 
     AND 16 
GROUP BY 
    Players.pid 
ORDER BY Points DESC 
    ,Goals DESC 
LIMIT 0 
    ,20; 
+0

我只是给它一个镜头,但它没有加起来重复PID的。我在2014年达到19个进球14次助攻。我在2015年有2次助攻。所有时间应该有19个进球和16次助攻。 –

+0

如果没有真实数据,这件事很难去尝试。你可以在http://sqlfiddle.com/准备你的模式吗? –

+0

是的,我从来没有这样做过,所以它可能需要我一点。 –