Męczę się już z tym jakiś czas i za bardzo nie wiem jak to zrobić w MySQL,
chciałbym połączyć 3 tabele: users, users_in_groups, users_groups,
chciałbym aby return array wyglądał tak:
array (
[0] => array(
'user_id' => 3,
'user_name' => 'Jan',
'user_in_groups' => array(
[0] => array(
'group_id' => 1,
'group_name' => 'admin',
)
)
)
)
Mam kod:
CREATE OR REPLACE VIEW view_users_in_groups AS
SELECT u.id AS user_id, u.name AS user_name, u.email AS user_email, ug.id AS group_id, ug.name AS group_name, ug.alias group_alias FROM users u, users_groups ug, users_in_groups uig
WHERE
u.id = uig.user_id
AND
ug.id = uig.group_id;
Zwraca:
array(3) {
[0]=>
object(stdClass)#28 (6) {
["user_id"]=>
string(1) "5"
["user_name"]=>
string(6) "Michal"
["user_email"]=>
string(17) "mail@gmail.com"
["group_id"]=>
string(1) "1"
["group_name"]=>
string(5) "admin"
["group_alias"]=>
string(6) "admins"
}
[1]=>
object(stdClass)#27 (6) {
["user_id"]=>
string(1) "5"
["user_name"]=>
string(6) "Michal"
["user_email"]=>
string(17) "mail@gmail.com"
["group_id"]=>
string(1) "3"
["group_name"]=>
string(9) "moderator"
["group_alias"]=>
string(9) "moderator"
}
[2]=>
object(stdClass)#26 (6) {
["user_id"]=>
string(1) "5"
["user_name"]=>
string(6) "Michal"
["user_email"]=>
string(17) "mail@gmail.com"
["group_id"]=>
string(1) "4"
["group_name"]=>
string(7) "writers"
["group_alias"]=>
string(6) "writer"
}
}
W takim układzie mam utrudniony odbiór danych, nie użyję pętli foreach ( zwróci 3 razy to samo, z innymi grupami ).
Mam jeszcze problem z użytkownikami, którzy nie należą do żadnej z grup, chciałbym mieć ich też w tym widoku ( chyba najlepiej by było, żeby ich user_in_groups był NULL a nie array ).