Вложенный массив с LEFT JOIN TABLE, извлекающий результаты

Возможно, я все делаю неправильно, но мне действительно нужна помощь, чтобы понять, как работать с вложенными массивами. У меня есть две таблицы пользователей и отзывов.

Это оператор SELECT, который я использую:

SELECT *
FROM `users`
LEFT JOIN `reviews`
ON users.userId = reviews.user_id
WHERE installation_id = $installation_id

Вот как я получаю свой массив:

Array
(
[0] => Array
(
[userId] => 60
[usersEmail] => gggg@gmail.com
[password] => 0Vg+sLdlALchd39l+3K3QXFZlvh79bwqXFp/J3nIR+o=
[usersName] => Lauren
[role] => scout
[id] => 1
[user_id] => 60
[client_id] => 62
[comments] => This person was extremely professional and went above and beyond. Her pricing was reasonable.
[stars] => 4
)

[1] => Array
(
[userId] => 60
[usersEmail] => gggg@gmail.com
[password] => 0Vg+sLdlALchd39l+3K3QXFZlvh79bwqXFp/J3nIR+o=
[usersName] => Lauren Rothlisberger
[role] => scout
[id] => 2
[user_id] => 60
[client_id] => 1
[comments] => She was pretty good. I have a couple small complaints but overall decent experience.
[stars] => 3
)

[2] => Array
(
[userId] => 63
[usersEmail] => proth@mail.com
[password] =>
[usersName] => Paul Rothlisberger
[role] =>
[id] =>
[user_id] =>
[client_id] =>
[comments] =>
[stars] =>
)

)

Что-то в этом не имеет смысла для меня. Я думал, что это будет больше похоже на

[1] => Array
(
[userId] => 60
[usersEmail] => gggg@gmail.com
[password] => 0Vg+sLdlALchd39l+3K3QXFZlvh79bwqXFp/J3nIR+o=
[usersName] => Lauren Rothlisberger
[role] => scout
[id] => 2
[user_id] => 60
[client_id] => 1
Array [0](
[comments]
[stars] )
)

Как мне получить этот массив? И, кроме того, как их перебирать, а затем показывать каждому пользователю все его комментарии и звездочки.

Я также не могу понять, как я могу найти, скажем, звезды для UserId = 60, а затем дать средние звезды для этого пользователя.

Спасибо за любую помощь, которую вы можете предложить мне. Я явно скучаю по некоторым основам. Пожалуйста, не указывайте мне документацию, которую я прошел и не могу применить.

0

Решение

как вы заметили, каждая возвращаемая запись является полной записью, и когда в нее вовлечено множество отношений, вы получаете одну запись для каждой комбинации.

когда я сталкиваюсь с этим, я применяю следующий короткий цикл, чтобы упаковать результаты во что-то более похожее на второй формат, но каждый раз дублирует поля уровня пользователя. таким образом, я могу легко подсчитать количество подпунктов для каждого пользователя, выполнить промежуточную сортировку или другие операции, используя вложенный foreach на стороне вывода.

$results = array();
$results_raw = db.select(' ... the select statement ');
if (is_array($results_raw)) foreach ($results_raw as $result) {
$results[$result['userId']] = $result;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector