Как лучше сделать SQL запрос?

Есть три таблицы:
1. Таблица с текстами.
id | text        | text_last_update
-----------------------------------
1  | бла-бла-бла | 2019-03-19
-----------------------------------

2. Таблица с версиями текста из предыдущей таблицы. При добавлении новой версии обновляется так же поля таблицы 1 - text и text_last_update
id | text_id | text_version  | date
------------------------------------------
1  | 1       | бла           | 2019-03-16
------------------------------------------
2  | 1       | бла-бла       | 2019-03-18
------------------------------------------
3  | 1       | бла-бла-бла   | 2019-03-19
------------------------------------------

3. Таблица с датами просмотра текстов пользователями. Даты просмотра текста перезаписываются при повторном просмотре текста. Если пользователь не просматривал текст, то записи нет.
id | user_id | text_id | date
-----------------------------------
1  | 1       | 1       | 2019-03-16
-----------------------------------


Как мне получить все данные из таблица 1, но так чтобы к ним добавилась последняя просмотренная пользователем версия текста из таблицы 2 на основе данных таблицы 3, учитывая, что записи о последнем просмотре тему может и не быть?
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
AnatolTh
@AnatolTh
Full Stack Developer
select
  t1.id,
  t1.text,
  t1.text_last_update,
  t2.text_version

from tabel1 t1

left join table3 t3 ON t3.text_id = t1.id
left join (
  select t.id, t.text_id, t.text_version, t.`date`
  from table2 t
  where t.`date` <= t3.`date`
  order by t.`date` desc limit 1
) t2 ON t2.text_id = t1.id

where t3.user_id = 1
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы