MySQL выборка и подстановка элемента из другой таблицы

Рейтинг: 0Ответов: 1Опубликовано: 16.08.2023

Имеется 2 таблицы:
1-ая - companies

id user_id
3 5
4 7
5 7

2-ая - comments

id company_id (внешний ключ companies - id) comment
1 3 Тест 1
2 3 Тест 2
3 4 Тест 3
4 4 Тест 4
5 5 Тест 5

Пытаюсь создать выборку companies + последний комментарий (по ID) для компании следующим образом:

SELECT
  `companies`.`id` AS `id`,
  `companies`.`user_id ` AS `user_id `,
  `comments`.`comment` AS `last_comment`
FROM
  `companies`
  JOIN `comments`
WHERE
  `companies`.`user_id` = '7'
  AND `comments`.`id` = (
    SELECT
      MAX(`comments`.`id`)
    FROM
      `comments`
      JOIN `companies`
    WHERE
      `comments`.`company_id` = `companies`.`id`
  )
ORDER BY
  `companies`.`id` DESC

В теории должно выдавать:

id user_id last_comment
4 7 Тест 4
5 7 Тест 5

Но выдает:

id user_id last_comment
4 7 Тест 5
5 7 Тест 5

Помогите, пожалуйста, решить данную головоломку

Ответы

▲ 1
SELECT
  c.id AS id,
  c.user_id AS user_id,
  (
    SELECT
      comment
    FROM
      comments
    WHERE
      company_id = c.id
    ORDER BY
      id DESC
    LIMIT 1
  ) AS last_comment
FROM
  companies c
WHERE
  c.user_id = '7'
ORDER BY
  c.id DESC;