@vetsmen

Как составить SQL запрос?

Есть две таблицы:
A: id | short_name
B: id | full_name | price

Мне нужно получить все записи из таблицы B, где short_name из таблицы A входит в full_name (например 'item' входит в 'item discount'), и при этом id таблицы А входят в массив (id in [1, 2, 3, 4, 5] к примеру).
Пришло в голову использовать JOIN что-то вроде этого:
SELECT
		"B".*
	FROM "A"
		LEFT JOIN "B"
			ON "B"."full_name" LIKE '%' + "A"."short_name" + '%'

Но во-первых нужно после оператора ON использовать первыми данные из таблицы A, а не наоборот (поэтому этот запрос не работает), ну а во-вторых мне кажется это далеко не лучшее решение.
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
@hell
Попробуйте так:
select b.* from b, a where a.id in (1,2,3,4,5) and position (a.short_name in b.full_name)>0;

(за скорость не ручаюсь, ну и скорее всего придется приглядываться к результатам
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
CONCAT вместо +
Ответ написан
Ваш ответ на вопрос

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

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