@lolrofl01

Как организовать поиск сразу по 3 таблицам?

Добрый день!
Есть 3 таблицы: авто, самолеты, поезда.
В каждой из них есть varchar поле name.
Есть строка поиска, в нее юзер вписывает название, после 3-й введенной буквы должен начинаться поиск во всех 3 таблицах, ну и выводиться первые 10 результатов с лучшем вхождением. Как это можно построить средствами php + sql?
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
@karminski
Senior React.JS Developer
Как вариант можно сделать общую таблицу transport, содержащую поле name для всех видов транспорта. А ваши таблицы подключать к общей через join по необходимости.

В этом случае поиск будет намного быстрее и проще. И только по одной таблице.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@sorokinfil
Если не нужна постраничная навигация, то UNION запросов должен помочь. В противном случае придётся делать отдельную таблицу чисто для FULLTEXT с внешними ключами.
Ответ написан
tsklab
@tsklab
Здесь отвечаю на вопросы.
В стандарте SQL нет "лучшего вхождения". Нужно использовать текстовый поиск конкретной СУБД.

Для объединения таблиц постройте представление.
Ответ написан
seganim
@seganim
PHP-программист, программный инженер
Если у них одинаковая структура, то UNION всех 3 таблиц, приведение их к представлению, текстовый поиск. Примерно так:
SELECT * from (Select * from auto union SELECT * from samolet UNION Select * from poezd) as table1 where table1.name like '%название%'

При наличии Textsearch в типе таблиц можно и им поискать
Ответ написан
Ваш ответ на вопрос

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

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