@happ

Sql запрос на выборку поста и колличества лайков?

Нужно одним запросом получить данные из таблицы posts и post_likes. При этом данных в post_likes может не быть. Без использования JOIN отображаются только те записи где есть post_likes, с использованием JOIN пишет not unique table/alias.

Структура post_likes:

CREATE TABLE post_likes (
postId INT UNSIGNED NOT NULL, /*postId - id поста*/
userId INT UNSIGNED NOT NULL, /*userId - id пользователя*/
UNIQUE KEY(postId, userId) /*сочетание postId, userId должно быть уникальным*/
);

Запрос:

SELECT posts.id, posts.userId, COUNT(post_likes.postId)
FROM posts, post_likes
LEFT JOIN posts ON posts.id = post_likes.postId
WHERE posts.id = post_likes.postId
GROUP BY posts.id;

Помогите изменить запрос чтоб он корректно работал.
  • Вопрос задан
  • 461 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `p`.`id`, `p`.`userId`, IFNULL(`c`.`count`, 0)
  FROM `posts` AS `p`
  LEFT JOIN (
    SELECT `postId`, COUNT(*) AS `count`
      FROM `post_likes`
      GROUP BY `postId`
  ) AS `c` ON `c`.`postId` = `p`.`id`
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Вы к лайкам делаете LEFT JOIN постов?) По логике у поста может не быть лайков, поэтому нужно к постам делать LEFT JOIN лайков. И зачем вы в WHERE дублируете условие по которому уже сделали JOIN?
Вам, молодой человек, потратить бы 15 минут на прочтение хотя бы одной статьи про JOIN в РБД, гораздо полезнее было бы, чем на тостере вопросы писать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы