Поиск по полям из связанных таблиц - PullRequest
0 голосов
/ 26 апреля 2018

Это таблица topics:

  • int id
  • строка label

Это таблица articles:

  • int id
  • строка label
  • строка content
  • int topic_id (внешний ключ)

Это таблица comments:

  • int id
  • строка content
  • строка article_id (внешний ключ)

Теперь я хочу реализовать функцию поиска, которая выдает все статьи, в которых поисковый термин (LIKE% term%) включен либо в

  • статьи label или content
  • label темы статьи
  • content комментариев к этой статье

Я думаю, что решение может иметь какое-то отношение к JOINS, но я абсолютно не знаю, как это сделать. Кто-нибудь может помочь?

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 26 апреля 2018

Я полагаю, что вы новичок и не хотите внедрять решение "Полнотекстовый поиск". Следовательно, простой SQL будет выглядеть так:

select a.*
  from topics t
  join articles a on a.topic_id = t.id
  join comments c on c.article_id = a.id
  where a.label like '%term%'
     or a.content like '%term%'
     or t.label like '%term%'
     or c.content like '%term%'

Обратите внимание, что производительность этого решения SQL невелика при работе с большим объемом или темами, статьями или комментариями. Тем не менее, он будет работать хорошо и вернет нужные вам статьи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...