Помогите написать корректный SQL запрос для вывода данных
У меня есть 3 таблицы: users, articles и likes.
Их структуры такие:
- users: id, ...
- articles: id, author_id, ...
- likes: article_id, user_id, liked
Мне нужно написать SQL запрос для получения всех статей определенного author_id с пометкой тех, которые пользователь с id X лайкнул. То есть в ответе должны быть данные о ВСЕХ статьях автора author_id и поле liked которое будет = 1 (если пользователь с id X эту статью лайкнул) и 0 (если не лайкнул).
Я пытался делать так:
SELECT
articles.id, articles.title, likes.liked
FROM articles LEFT JOIN likes ON likes.user_id = X AND likes.article_id = articles.id
WHERE articles.author_id = Y
но мне выдается ерунда, которая никакого отношения к тому что мне надо не имеет.
Ответы (1 шт):
Автор решения: Alex R.
→ Ссылка
С помощью подзапроса определяем количество лайков.
SELECT
a.id, a.title,
(SELECT
count(*)
FROM likes l
WHERE l.user_id = <пользователь_X>
and l.article_id = a.id) liked_cnt
FROM articles a
WHERE a.author_id = <определенный_автор>
<пользователь_X> и <определенный_автор> заменить на требуемые значения.