Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php (a,b)和(b,a)分组_Php_Mysql_Sql_Group By - Fatal编程技术网

Php (a,b)和(b,a)分组

Php (a,b)和(b,a)分组,php,mysql,sql,group-by,Php,Mysql,Sql,Group By,我有一张这样的桌子: player1 player2 player3 player4 score1 score2 1 2 3 4 11 2 1 2 3 4 4 11 2 1 3 4 11

我有一张这样的桌子:

player1    player2    player3    player4    score1    score2
   1          2          3          4         11         2  
   1          2          3          4          4         11
   2          1          3          4         11         5
如果我查询:
按player1、player2从mytable组中选择player1、player2、SUM(score1)

我会得到:

player1   player2   SUM(score1)
   1         2          15
   2         1          11
但是,我想同时按player1、player2和player2、player1进行分组,以获得:

player   player   SUM(score1)
   1         2         26
有人知道这是否可能(我使用MySQL)

如果不是,你知道用PHP做这件事的好方法吗?

你可以使用
least()
grest()

或者试试这个

select min(player1) as player1,max(player2) as player2, sum(score1) as score1 from
(
select player1, player2, SUM(score1) as score1 FROM mytable GROUP BY player1, player2
) as t 

使你的生活正常化schema@Strawberry也许我的桌子不好,是的。你认为我应该把我的球员放在另一张桌子上,然后做一些类似的事情:第一组,第二组,第一组,第二组?太好了,我不知道为什么我没有想到这一点@你可以出于任何理由投反对票,只要你不是特别针对任何用户(而且你不是)。我很好奇为什么你觉得有必要在发表评论之前先发表评论though@Strawberry我明白了,听起来不错。不管怎样,我认为你应该对待每一个投反对票的人same@Strawberry关于次优设计的问题的每个答案都必须包含警告,即答案是设计问题的解决方法吗?重复一段又一段会让人觉得乏味,而且经常当提到这一点时,你会发现OP的设计仍然是固定不变的。@HartCO不幸的是,我认为是这样,是的。这一范式形成了关于各种学科的最佳知识宝典。这里的主题是关系数据的管理。因此,提出解决方案,至少不要考虑设计有缺陷的可能性,欺骗那些来这里学习关系数据库的人。
select min(player1) as player1,max(player2) as player2, sum(score1) as score1 from
(
select player1, player2, SUM(score1) as score1 FROM mytable GROUP BY player1, player2
) as t