Php 如何从父表为一行的儿童中进行选择
我正在努力将所有结果作为一行从member_details表中获取 并按memberId对其进行分组。 以下是我的表格结构: //成员Php 如何从父表为一行的儿童中进行选择,php,sql,Php,Sql,我正在努力将所有结果作为一行从member_details表中获取 并按memberId对其进行分组。 以下是我的表格结构: //成员 +---------------------------+ | memberId | stateId | +-----------+---------------+ | 1 | 101 | | 2 | 103 | | 3
+---------------------------+
| memberId | stateId |
+-----------+---------------+
| 1 | 101 |
| 2 | 103 |
| 3 | 109 |
| 4 | 109 |
+---------------------------+
//会员详情
+--------------------------------------------------+
|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
您可以按如下方式使用
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
md
在您的SQL中没有定义,但“努力获取所有结果”是什么意思?你看到错误了吗?警告?无效的输出?我忘记了md,但在成员\u detailsThanks@Zearlous之后,我现在得到了更好的结果。但是对于我的桌子设计来说,它好吗?或者我可以如何改善我的情况?我相信你的桌子设计很好。
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