Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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 如何从父表为一行的儿童中进行选择_Php_Sql - Fatal编程技术网

Php 如何从父表为一行的儿童中进行选择

Php 如何从父表为一行的儿童中进行选择,php,sql,Php,Sql,我正在努力将所有结果作为一行从member_details表中获取 并按memberId对其进行分组。 以下是我的表格结构: //成员 +---------------------------+ | memberId | stateId | +-----------+---------------+ | 1 | 101 | | 2 | 103 | | 3

我正在努力将所有结果作为一行从member_details表中获取 并按memberId对其进行分组。 以下是我的表格结构:

//成员

    +---------------------------+
    | 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