У меня есть запрос, который я использую, чтобы объединить две таблицы и получить данные, которые мне нужны.
$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"
}
}
}
Это невозможно с (стандартным) SQL, результатом всегда будет "плоская" таблица...
Вам нужен кусок кода, чтобы разбить плоские данные на структуру, которую вы хотите.
Все остальное, вероятно, является сложным, нестандартным усовершенствованием РСУБД.
json_array()
и некоторые манипуляции со строками (я считаю). Кроме того, не имеет отношения, что предложениеON
очень и очень странно. Вы стремились к перекрестному / декартовому продукту?