@lexstile

Как правильно доработать SQL-запрос?

Есть запрос:
SELECT events.id, events.name as event_name, events.date_start, events.date_end, events.country_id, events.description, events.day_1, events.day_2, events.month_1, events.month_2, events.year_1, events.year_2, countries.name as country_name, links.links, images.images, clusters.clusters FROM events
	LEFT JOIN countries ON events.country_id = countries.id
	LEFT JOIN (SELECT event_id, GROUP_CONCAT(link) as links FROM links GROUP BY event_id) AS links ON events.id = links.event_id
	LEFT JOIN (SELECT event_id, GROUP_CONCAT(name) as images FROM images GROUP BY event_id) AS images ON events.id = images.event_id
	LEFT JOIN (SELECT country_id as c_id, GROUP_CONCAT(name) as clusters FROM clusters GROUP BY c_id) AS clusters ON countries.id = c_id
	WHERE (events.name LIKE :search || events.description LIKE :search) 
	ORDER BY events.year_1 ASC
	LIMIT 100

Мне бы хотелось еще искать события по ключевым словам, которые находятся в другой таблице:
5f46d7ed225eb020496762.png
То есть условие должно быть вида: WHERE (events.name LIKE :search || events.description LIKE :search || keywords.name LIKE :search)

Как правильно доработать запрос и добиться необходимого результата?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@WaterSmith
Android-разработчик. Java, Kotlin
Добавить джойн:
LEFT JOIN keywords ON keywords.event_id = events.id

и тогда ваше новое условие заработает
Чтобы небыло дублей в результатах выборки (при совпадении по нескольким ключевым словам могут появиться) используйте SELECT DISTINCT
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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