Mysql 按日期分组并存储在SQL中

Mysql 按日期分组并存储在SQL中,mysql,mariadb,aggregate-functions,Mysql,Mariadb,Aggregate Functions,在SQL中执行请求时遇到问题 我的桌子看起来像这样 id | storeID | dateDone | paidSum date | store One | store Two | store Tree 08/12 | 2000 | 6000 | 1000 08/13 | 100 | 90 | 10000 [ "08/12" => [ "total" => 9999, "byPlace" => [ "

在SQL中执行请求时遇到问题

我的桌子看起来像这样

id | storeID | dateDone | paidSum 
date  | store One | store Two | store Tree
08/12 | 2000      | 6000      | 1000    
08/13 | 100       | 90        | 10000
[
"08/12" => [
  "total" => 9999,
  "byPlace" => [
    "1" => 800,
    "2" => 777,
     .....
   ]
 ],
....
]
我需要发出一个请求,使我能够生成这样的html表

id | storeID | dateDone | paidSum 
date  | store One | store Two | store Tree
08/12 | 2000      | 6000      | 1000    
08/13 | 100       | 90        | 10000
[
"08/12" => [
  "total" => 9999,
  "byPlace" => [
    "1" => 800,
    "2" => 777,
     .....
   ]
 ],
....
]
所以数组应该是这样的

id | storeID | dateDone | paidSum 
date  | store One | store Two | store Tree
08/12 | 2000      | 6000      | 1000    
08/13 | 100       | 90        | 10000
[
"08/12" => [
  "total" => 9999,
  "byPlace" => [
    "1" => 800,
    "2" => 777,
     .....
   ]
 ],
....
]
这可以在一个SQL请求中完成,还是必须继续使用foreach循环(加载需要很长时间)

数据库包含+10k个条目。我在这里使用了两件事

按日期和存储进行分组很简单

SELECT SUM(paidSum) total,
       DATE(dateDone) dateDone,
       StoreId
  FROM table
 GROUP BY DATE(dateDone), StoreId
 ORDER BY 1, 2
这将为您提供一个结果集,其中每个日期和存储都有一行。它将在一个查询中生成您所需的所有内容,从而摆脱子查询


将存储显示为列涉及到旋转结果集。MySQL中的数据透视是一个众所周知的棘手问题,在php或其他应用程序中通常更容易实现。

使用按日期分组然后只按日期分组,只获取一个storeId。我需要按存储和日期列出详细信息。@juancarlosoropeza的可能重复项我不会为此使用mysql pivot查询。这只是一个在循环中解析数组的问题。但是你有重复的日期。这可以通过循环来解决,但需要3-4秒来处理,有点太长了。