Домой Каталог: Дополнения WP-Recall Groups Recall Владельца группы нет в группе (есть)
10ответ(ов) в теме
Preci
не в сети 19 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
1
12:05

Суть вот в чем:

Есть таблица groups_users в которой указаны пользователи группы, но среди них НЕТ админа группы и если надо получить всех участников группы (а владелец - то же участник) то приходится лезть в отдельную таблицу groups и брать админа оттуда.

Мне кажется админа надо записывать еще и в таблицу groups_users, что бы его при необходимости можно было получать вместе со всем списком участников группы. В том же вконтакте в разделе группы "подписчики" указывается админ и владелец группы. Так что ничего страшного в том, что он будет висеть в 2ух блоках: участники и администрация.

0
Вова (Otshelnik-Fm)
не в сети 22 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
2
12:17

Простой left Join
Особо не тестил - на вскидку

SELECT * FROM `wp_rcl_groups_users` AS t_users
LEFT JOIN `wp_rcl_groups` AS t_group
ON t_users.group_id = t_group.ID
WHERE group_id = 9

0
Preci
не в сети 19 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
3
12:27

Спасибо, но там какая-то лабуда получается. Например:

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 запрос, но и поместить владельца группы в участники так же логично, я думаю

0
Вова (Otshelnik-Fm)
не в сети 22 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
4
12:34

Ну так вы в селекте укажите не всю выборку (*) а нужные колонки

Это и есть нормально - и это через один запрос. Обычная практика связывания нескольких таблиц одним запросом

Вы не можете просматривать опубликованные ссылки
0
Preci
не в сети 19 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
5
12:40

Ну вот таким образом я делал, получался ответ:
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 раз и проверять что он уже показан...

Мне не понятно просто почему автор группы, по сути, не ее участник, вот и все.

0
Вова (Otshelnik-Fm)
не в сети 22 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
6
12:50

Зная этот момент что вам мешает взять один раз admin_id?
Используйте конкатенацию в foreach, за foreach присоединяйте и админа. и выводите.
Хоть 1000 человек будет - на скорость выборки это не сильно повлияет (над sql запросом сильно не думал - может есть способ один раз админа положить, времени на эксперименты нет - т.к. не вижу проблемы).
Ваш вопрос по архитектуре бд я понял - его не обсуждаю. Так было заложено вначале. Но проблем с получением нужных данных одним запросом я не вижу.

0
Preci
не в сети 19 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
7
12:55

Если я правильно понял, то мне придется вначале через foreach пересобрать массив, добавив в новый все user_id и 1 раз admin_id и затем уже через следующий foreach выполнять функцию для каждого user_id

Тогда, наверное, надо поискать в mysql что-то, мб там можно в ответе вернуть admin_id один раз и вставить его как-то в user_id

0
Вова (Otshelnik-Fm)
не в сети 22 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
8
12:59

Примерно об этом я говорил:

foreach($user_list as $user) {
    $users .= $user['user_id'];
}
$admin = $user_list['admin_id'];

$out = $admin.$users;

echo $out;

0
Вова (Otshelnik-Fm)
не в сети 22 часа
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
9
13:05

Пробуйте:

(SELECT user_id FROM `wp_rcl_groups_users`
WHERE group_id = 9
) UNION (
SELECT admin_id FROM `wp_rcl_groups`
WHERE ID = 9
)

Вы не можете просматривать опубликованные ссылки
2
Preci
не в сети 19 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
10
13:15

Otshelnik-Fm сказал(а)

Пробуйте:

(SELECT user_id FROM `wp_rcl_groups_users`
WHERE group_id = 9
) UNION (
SELECT admin_id FROM `wp_rcl_groups`
WHERE ID = 9
)

Вы не можете просматривать опубликованные ссылки

Да, так то что надо. Спасибо

1
Тема закрыта. Публикация новых сообщений запрещена.