我有一个查询正在用于联接两个表并获取所需的数据。
$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"
}
}
}
答案 0 :(得分:1)
(标准)SQL无法做到这一点,结果将始终是“平面”表...
您需要一段代码才能将平面数据分解为所需的结构。
其他任何事情都可能是RDBMS的复杂,非标准的增强功能