Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Есть таблица users:
id | name
--+------
1 | vasya
2 | petya
3 | sasha
4 | masha
5 | ivan
Требуется организовать связь многие ко многим для строк из этой таблицы. (друзья Васи: Петя и Маша и т.д.)
для этого сделал таблицу связей users2users:
id | user_id_1 | user_id_2
--+----------+----------
1 | 1 | 2
2 | 1 | 4
3 | 3 | 2
4 | 2 | 5
Задача: выбрать всех друзей Пети?
Что-то не пойму как построить запрос. Неужели придется сохранять все связи дважды (прямая и обратная) ?
Как правильно реализовать такую связь? И как правильно построить запрос? Помогите пожалуйста неопытному
Неактивен
Проще всего, конечно, хранить связи дважды. Ну то есть можно
написать запрос WHERE user_id_1 = ... OR user_id_2 = ..., наверное,
он тоже будет неплохо работать
Неактивен
Если хранить связи дважды, то запрос получается простенький:
Неактивен
SELECT user_id_2 FROM users2users WHERE user_id_1 = 2
UNION
SELECT user_id_1 FROM users2users WHERE user_id_2 = 2
Ну и JOIN, соответственно, или в каждую часть UNION, или снаружи подзапросом.
Неактивен
Страниц: 1