php - MySQL 计算直到特定行的值

标签 php mysql

由于我不是母语人士,所以如果我没有详细解释我的情况,我深表歉意。我确信这对大多数人来说相当简单,但我却很难做到。我正在使用 php/mysql。

假设我有一个数据库如下:

id   game   scorer
1     1      molly
2     1      sarah
3     1      angela
4     1      molly
5     2      jane
6     2      molly
7     2      sarah

我如何编写一个查询来向每场比赛的得分手提供他们在赛季中直到特定进球之前的进球数?

Example: 
Game 1: Molly (1st), Sarah (1st), Angela (1st), Molly (2nd)
Game 2: Jane (1st), Molly (3rd), Sarah (2nd)

最佳答案

CREATE TABLE goals
(goal_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,game INT NOT NULL
,scorer VARCHAR(12) NOT NULL
);

INSERT INTO goals VALUES
(1,1,'molly'),
(2,1,'sarah'),
(3,1,'angela'),
(4,1,'molly'),
(5,2,'jane'),
(6,2,'molly'),
(7,2,'sarah');


SELECT game, GROUP_CONCAT(CONCAT(scorer,'(',rank,')')) scorers FROM 
(
SELECT x.game
     , x.scorer
     , COUNT(*) rank 
  FROM goals x 
  JOIN goals y 
    ON y.scorer = x.scorer 
   AND y.goal_id <= x.goal_id 
 GROUP 
    BY x.game,x.goal_id,x.scorer
)n
GROUP BY game;

+------+--------------------------------------+
| game | scorers                              |
+------+--------------------------------------+
|    1 | molly(1),sarah(1),angela(1),molly(2) |
|    2 | jane(1),molly(3),sarah(2)            |
+------+--------------------------------------+

子查询本身将提供替代显示

关于php - MySQL 计算直到特定行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21724135/

相关文章:

PHP:减小 'save as' 窗口的大小

php - Web 服务器上 codeigniter 2.1 的 index.php 问题

mysql - 为什么我不能以这种方式添加外键约束?

mysql - 如何使用参数重复mysql游标?

c# - 将 mysql 数据库中的字符串日期与 Entity Framework c# 进行比较

mysql - 通过他的名字更改列引用 ID 保持 NULL 值

java - 奇怪的 PHP shell_exec Java 行为

php - 在php中删除网格中的行时出错

php - 行已删除,但PHP并未真正从数据库中删除+没有错误消息

php - 站点地图 xml 文件; url 是否必须以 ".htm"结尾?