У меня есть две текущие таблицы. Я хочу получить все соответствующие строки порядка в ОДНОМ запросе.MySQL GROUP BY: Как вернуть несколько строк?
Мой текущий код выглядит следующим образом:
$query = '
SELECT * FROM table_a
JOIN table_b ON table_b.order_id = table_a.order_id
WHERE table_a.order_id = '1'
GROUP BY table_a.order_id
';
$result_prepare = $this->DB->prepare($query);
$result_prepare->execute();
$result = $result_prepare->fetchAll(PDO::FETCH_ASSOC);
$query_result = array('result'=>$result);
print_r($query_result);
Выходной Возвращаемый результат только первая строка:
Array
(
[0] => Array
(
[order_id] => 1
[row_id] => 1
[value] => 100
)
}
Я хотел бы результат вывода, чтобы вернуть все строки сгруппированных по строкам.
Array
(
[0] => Array
(
[order_id] => 1
[rows] => Array
(
[0] => Array
(
[row_id] => 1
[value] => 100
)
[1] => Array
(
[row_id] => 2
[value] => 101
)
)
)
}
Как я могу это достичь? Мне нужно изменить свой SQL-запрос.
вы не можете иметь такой выход в sql. у вас всегда будут строки с одинаковым количеством столбцов в каждой строке. столбец не может иметь в нем несколько значений. –
@VolkanUlukut Правильно - SQL-запрос вернет 3 столбца для каждой строки, и ваша логика отображения PHP отвечает только за печать 'order_id', когда она изменяется. Сам SQL так же прост, как 'SELECT order_id, row_id, значение FROM TableB ORDER BY order_id, row_id' –
Обратите внимание, что SQL работает на логике реляционных множеств, а не на процедуре/массиве. Попробуйте записать результат, который вы хотите получить в форме набора результатов. Ваш вопрос путается, и я не могу понять, что вы хотите (агрегат, отдельный, join ,?) – jean