Страницы

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

воскресенье, 8 марта 2020 г.

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

#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

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

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