Как написать JOIN?

90
05 мая 2021, 19:20

Подскажите пожалуйста как решить следующую задачу. Я хочу отобразить список всех пользователей, при этом напротив тех пользователей на которых подписан текущий пользователь системы, я буду отрисовывать сердечко.

У меня имеется 2 таблицы (users, followers), а так же id текущего пользователся. Результирующая таблица должна содержать ровно столько строк сколько пользователей в системе (за исключением текущего, то есть на одну строку меньше), при этом в строках пользователей, на которых подписан текущий должна присутствовать какая-то отметка об этом.

Вот скрины таблиц для примера users

followers (follower - это id юзера, а following - id юзера на которого подписан follower)

Пожалуйста предложите варианты решения данной задачи.

Answer 1

Приблизительно так (при f.id не null ставить сердечко):

select u.id, u.name, f.id
from users u left join followers f on u.id = f.following and f.follower = @id
where u.id <> @id

Возможно, можно как-то оптимизировать.

READ ALSO
Почему не работает тест?

Почему не работает тест?

При нажатии на кнопку "Ответ" в данном тесте: 1) проверяется соответствие radiochecked

120
Как в строке &ldquo;Организация: %name% %inn%&rdquo; выделить name и inn

Как в строке “Организация: %name% %inn%” выделить name и inn

Как в строке "Организация: %name% %inn%" выделить name и inn в разные переменные?

88