Задать вопрос
@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)

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

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

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

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