Суть вот в чем:
Есть таблица groups_users в которой указаны пользователи группы, но среди них НЕТ админа группы и если надо получить всех участников группы (а владелец - то же участник) то приходится лезть в отдельную таблицу groups и брать админа оттуда.
Мне кажется админа надо записывать еще и в таблицу groups_users, что бы его при необходимости можно было получать вместе со всем списком участников группы. В том же вконтакте в разделе группы "подписчики" указывается админ и владелец группы. Так что ничего страшного в том, что он будет висеть в 2ух блоках: участники и администрация.
Спасибо, но там какая-то лабуда получается. Например:
Array ( [ID] => 6 [group_id] => 6 [user_id] => 2 [user_role] => author [status_time] => 0 [user_date] => 2017-02-21 17:51:43 [admin_id] => 1 [group_users] => 2 [group_status] => open [group_date] => 2017-02-21 17:48:26 )
Array ( [ID] => 6 [group_id] => 6 [user_id] => 3 [user_role] => author [status_time] => 0 [user_date] => 2017-02-21 17:52:14 [admin_id] => 1 [group_users] => 2 [group_status] => open [group_date] => 2017-02-21 17:48:26 )
т.е. admin_id 2 раза, да и все остальное не нужно, мне например надо только ID юзеров и все. Наверное и то что мне надо как то можно сделать нормально через 1 запрос, но и поместить владельца группы в участники так же логично, я думаю
Ну вот таким образом я делал, получался ответ:
Array ( [user_id] => 2 [admin_id] => 1 )
Array ( [user_id] => 3 [admin_id] => 1 )
Представим что в группе 100 человек - тогда там 100 раз будет admin_id - зачем это не понятно.
И например если есть только user_id то их легко будет получить через foreach:
foreach($user_list as $user) {
echo $user['user_id';]
}
А с admin_id получается надо его показать 1 раз и проверять что он уже показан...
Мне не понятно просто почему автор группы, по сути, не ее участник, вот и все.
Зная этот момент что вам мешает взять один раз admin_id?
Используйте конкатенацию в foreach, за foreach присоединяйте и админа. и выводите.
Хоть 1000 человек будет - на скорость выборки это не сильно повлияет (над sql запросом сильно не думал - может есть способ один раз админа положить, времени на эксперименты нет - т.к. не вижу проблемы).
Ваш вопрос по архитектуре бд я понял - его не обсуждаю. Так было заложено вначале. Но проблем с получением нужных данных одним запросом я не вижу.
Если я правильно понял, то мне придется вначале через foreach пересобрать массив, добавив в новый все user_id и 1 раз admin_id и затем уже через следующий foreach выполнять функцию для каждого user_id
Тогда, наверное, надо поискать в mysql что-то, мб там можно в ответе вернуть admin_id один раз и вставить его как-то в user_id