#mysql #sql #запрос
Всем привет! У меня есть две таблицы: Мои друзья(friends): id, user1_id, user2_id, joined Пользователи(users): id, name, sename Хочу достать значение из поля user1_id и user2_id объединить их в один столбец, и уже по этому столбцу сделать INNER JOIN с таблицей users. С объединением проблем не возникло, делаю так: SELECT user1_id as friend_id, joined FROM friends WHERE user2_id = 7 #Выбираем всех друзей пользователя из второй колонки UNION SELECT user2_id, joined FROM friends WHERE user1_id = 7 #Выбираем всех друзей пользователя из первой колонки А вот JOIN никак не могу подружить с union. Делаю так: SELECT users.*, friends.user1_id as friend_id, friends.joined FROM users INNER JOIN friends ON friends.friend_id = users.id WHERE friends.user2_id = 7 UNION SELECT user2_id, joined FROM friends WHERE user1_id = 7 В двух словах: Друзья пользователя могут находится в колонке friends.user1_id или friends.user2_id, чтобы упростить запрос я хочу объединить эти две колонки и уже по этой колонке достать нужных пользователей из таблице users.
Ответы
Ответ 1
SELECT users.*, friend_id, joined FROM( SELECT user1_id as friend_id, joined FROM friends WHERE user2_id = 7 #Выбираем всех друзей пользователя из второй колонки UNION SELECT user2_id, joined FROM friends WHERE user1_id = 7 #Выбираем всех друзей пользователя из первой колонки )friends INNER JOIN users ON friends.friend_id = users.id
Комментариев нет:
Отправить комментарий