Страницы

Поиск по вопросам

среда, 29 мая 2019 г.

Как правильно объединить два столбца и сделать по нему JOIN

Всем привет! У меня есть две таблицы: Мои друзья(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.


Ответ

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

Комментариев нет:

Отправить комментарий