php - 当所有数据都在一个表中时,MySQL连接多个sql结果

标签 php mysql pivot-table

我有一个包含大量数据的表格,其中包含多个字段:

day (Monday ~ Sunday)
City (NY, LA, FL, etc.)

我想用 php 制作一个表格来显示这样的总数:

  --- Mon --- Tue --- Wed ...
NY    6       8       9
LA    7       5       3
FL    1       0       4 

但是我在编写 SQL 来完成这项工作时遇到了问题。我使用过 union 但它在底部附加了结果,所以我似乎需要使用 inner join,或者甚至不需要。我可以远程接近我想要的两个查询是:

select city, count(id) as 'Monday' from <code>index</code> where city = "NY" and day = 'Monday' group by city union all <br/>select city, count(id) as 'Monday' from <code>index</code> where city = 'LA' and day = 'Monday' group by city union all <br/>select city, count(id) as 'Monday' from <code>index</code> where city = 'FL' and day = 'Monday' group by city

这会产生以下结果

  --- Mon
NY    6
LA     7
FL     1

问题是我不知道如何将剩余的日子添加到它的右边

我试过的另一个查询是
select a.day, a.counts as 'NY', b.counts as 'LA' from <br/>(select day, count(id) as counts from <code>index</code> where city='NY' GROUP BY DAY) as a <br/>left join <br/>(select day, count(id) as counts from <code>index</code> where city='LA' GROUP BY DAY) as b <br/>on (a.day = b.day) <br/>order by field (a.<code>day</code>, 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')

这会产生以下结果

                 NY --- LA ---
Monday      6        7
Tuesday     8        5

这个的问题是应该交换行和列,而且我不知道如何添加另一个城市(我有很多城市)。

所有数据都在一个名为“索引”的表中。有人可以指导我如何编写 SQL 吗?当没有记录时,我还需要该字段显示 0 或 Null。最终目标是用 PHP 生成表格。

感谢您花时间阅读和回答。

最佳答案

您似乎想要按 day 对数据进行透视,并按 City 对数据进行分组。如果是这样,那么您可以尝试以下查询可能会有所帮助。

select city, 
sum(case when (day = 'Monday') then  1 else 0 end)  'Monday',
sum(case when (day = 'Tuesday') then  1 else 0 end)  'Tuesday',
sum(case when (day = 'Wednesday') then  1 else 0 end)  'Wednesday',
sum(case when (day = 'Thursday') then  1 else 0 end)  'Thursday',
sum(case when (day = 'Friday') then  1 else 0 end)  'Friday',
sum(case when (day = 'Saturday') then  1 else 0 end)  'Saturday',
 sum(case when (day = 'Sunday') then  1 else 0 end)  'Sunday'

from `index` group by city

关于php - 当所有数据都在一个表中时,MySQL连接多个sql结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47673418/

相关文章:

mysql - 使用多个 ID 更新数据透视表

php - 删除通过 Woocommerce 注入(inject) Head 部分的内联 CSS 规则 (woocommerce-inline-inline-css)

php - 如何从数据库中提取记录、调整它们并将它们插入到不同的列中?

mysql - 定期删除 MySQL 表 A 行,但保留关联的表 B 数据,该数据根据表 A 的数据进行更新

MySQL - 行到列并保留 NULL

python - Pandas :如何为数据集中的所有项目创建userByItem数据透视表

php - 如何在 ZEND SOAP AutoDiscovery 中设置这些复杂类型?

php - 为什么边框折叠在 html2pdf 中不起作用?

java - Hibernate - MySQL - 连接到数据库

java - MySQL 自定义主键生成器