@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, а не наоборот (поэтому этот запрос не работает), ну а во-вторых мне кажется это далеко не лучшее решение.
  • Вопрос задан
  • 99 просмотров
Решения вопроса 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
жизнь прекрасна в Амстердаме, а в Воронеже gаvно
CONCAT вместо +
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
23 окт. 2019, в 12:53
2000 руб./за проект
23 окт. 2019, в 12:26
3000 руб./за проект
23 окт. 2019, в 12:12
10000 руб./за проект