|
|
|
| В реализации системы, над которой работаю, друзья пользователей находятся в его личной группе, модератором которой он является.
Т.е. например, есть пользователи
id | name
1 | User1
2 | User2
соответственно у каждого из них есть группа, которая называется именем пользователя:
g_id | g_name | g_moder
7 | User1Group | 1
8 | User2Group | 2
и если пользователь User2 попросился в друзья к пользователю User1, в таблице участников групп будет такая запись:
g_id | u_id
7 | 2
пользователи будут считаться друзьями, если User1 будет состоять в группе User2Group, а User2 соответственно в User1Group.
Теперь, собственно, вопрос. Как можно одним запросом проверить факт, являются ли 2 пользователя друзьями, имея на руках их id.
По сути, нужен INNER JOIN 2х таблиц по g_id... Но в целом не могу придумать запрос подходящий. Помогите, пожалуйста.. | |
|
|
|
|
|
|
|
для: Sturmvogel
(14.11.2011 в 02:30)
| | Если не сложно дайте названия таблиц... | |
|
|
|
|
|
|
|
для: cheops
(14.11.2011 в 13:21)
| | Конечно не сложно...
Таблица group - хранит названия групп и их модераторов (g_id, g_moder)
Таблица group_member - хранит участников групп (g_id, user_id)
Ну, и если нужно, то таблица users хранит u_id, u_name | |
|
|
|
|
|
|
|
для: Sturmvogel
(14.11.2011 в 02:30)
| | Можно воспользоваться следующим запросом (0 - не друзья, больше 0 - друзья)
SELECT
COUNT(*)
FROM
group_member m
JOIN
`group` g
USING(g_id)
WHERE
(m.user_id = 1 AND g.g_moder = 2) OR
(m.user_id = 2 AND g.g_moder = 1)
|
| |
|
|
|