php - 如何从父表作为一行的 chldren 中进行选择
问题描述
我正在努力将 member_details 表中的所有结果作为一行获取并按 memberId 分组。这是我的表结构:
//成员
+---------------------------+
| memberId | stateId |
+-----------+---------------+
| 1 | 101 |
| 2 | 103 |
| 3 | 109 |
| 4 | 109 |
+---------------------------+
//member_details
+--------------------------------------------------+
|id |memberId |gender |age_type |number|
+---+---------+-------------+---------------+------+
|1 |4 |male |childs |2000 |
|2 |4 |male |adults |590 |
|3 |4 |male |elders |900 |
|4 |4 |female |childs |2000 |
|4 |4 |female |adults |2000 |
|4 |4 |female |elders |2000 |
+--------------------------------------------------+
//结果表视图
+--------------------------------------------------------------------------+
| childs | childs | adults | adults | elders | elders | total | total |
| (male) |(female) | (male) |(female)|(male) |(female)| (male) | (female) |
+--------+---------+--------+--------+--------+--------+-------------------+
| 2000 | 2000 | 590 | 2000 | 900 |2000 | 5590 | 6000 |
+--------------------------------------------------------------------------+
//sql
SELECT *.m, *.md
FROM members m
JOIN member_details md
ON m.memberId = md.memberId
where m.stateId = 109
GROUP BY md.memberId
解决方案
您可以使用case
如下表达式
select
sum(case when gender = 'male' and age_type = 'childs' then number else 0 end) as total_male_childs,
sum(case when gender = 'male' and age_type = 'adults' then number else 0 end) as total_male_adults,
sum(case when gender = 'male' and age_type = 'elders' then number else 0 end) as total_male_elders,
sum(case when gender = 'female' and age_type = 'childs' then number else 0 end) as total_female_childs,
sum(case when gender = 'female' and age_type = 'adults' then number else 0 end) as total_female_adults,
sum(case when gender = 'female' and age_type = 'elders' then number else 0 end) as total_female_elders
from member_dtails
推荐阅读
- php - 需要在 sql 数据库上存储和检索图像文件。代码生成2个警告,无法上传图片
- maven - 集中管理依赖版本
- docker - 使用 .dockerignore 忽略文件和目录
- sass - 输出计算?
- javascript - “在模块主体中导入;重新排序到顶部导入/第一”跨多个文件
- encryption - 包在 java 中的等效代号
- javascript - 如何使用值元素作为第二个元素的键?
- javascript - 从 json 获取嵌套值
- reporting-services - 每个组实例的表头重复 ssrs
- android - 如何在 Listview 中动态添加 LinearLayout?