MySQL加入组

时间:2019-03-28 19:18:08

标签: php mysql

我有一个查询正在用于联接两个表并获取所需的数据。

$query = "SELECT
            type.name, bonus.bonus_id, bonus.bonus_amount
          FROM
            bonuses bonus
          INNER JOIN
            bonus_type type
          ON
            type.group_id = ?
          AND
            bonus.bonus_type_id = type.bonus_type_id";

已收到示例数据

array(4) {
  [0]=>
  array(3) {
    ["name"]=>
    string(8) "personal"
    ["bonus_id"]=>
    string(1) "1"
    ["bonus_amount"]=>
    string(2) "20"
  }
  [1]=>
  array(3) {
    ["name"]=>
    string(7) "monthly"
    ["bonus_id"]=>
    string(1) "1"
    ["bonus_amount"]=>
    string(2) "20"
  }
  [2]=>
  array(3) {
    ["name"]=>
    string(8) "personal"
    ["bonus_id"]=>
    string(1) "2"
    ["bonus_amount"]=>
    string(2) "30"
  }
  [3]=>
  array(3) {
    ["name"]=>
    string(7) "monthly"
    ["bonus_id"]=>
    string(1) "2"
    ["bonus_amount"]=>
    string(2) "30"
  }
}

我希望发回的数据结构具有以下格式。我尝试了分组方式,但这只是浓缩了我的结果。朝着正确方向的任何观点将不胜感激。我很确定我的查询对我要查找的格式是错误的,但是它确实包含了我要查找的所有数据。

array(2) {
  ["personal"]=>
     array(2){ 
       [0] => array(2) {
             ["bonus_id"]=>
             string(1) "1"
             ["bonus_amount"]=>
             string(2) "20"
          }
       [1] => array(2) {
             ["bonus_id"]=>
             string(1) "1"
             ["bonus_amount"]=>
             string(2) "20"
          }
      }
    ["monthly"]=>
         array(2){ 
       [0] => array(2) {
             ["bonus_id"]=>
             string(1) "1"
             ["bonus_amount"]=>
             string(2) "20"
          }
       [1] => array(2) {
             ["bonus_id"]=>
             string(1) "1"
             ["bonus_amount"]=>
             string(2) "20"
        }
    }
 }

1 个答案:

答案 0 :(得分:1)

(标准)SQL无法做到这一点,结果将始终是“平面”表...

您需要一段代码才能将平面数据分解为所需的结构。

其他任何事情都可能是RDBMS的复杂,非标准的增强功能