Задать вопрос
@Prorok89
Php программист

Как в Sphinx искать по одной таблице, а данные брать из другой?

Добрый день, почитал различные примеры и не смог разобраться.

У меня есть одна таблица, например такая:

product_values
product_id |          name             |         values 
-------------------------------------------------------------------------------
         1       |   Product One         |       soft touch plastic, big screen 
         2       |   Product Two         |       small screen, metal 
         3       |   Product Three      |       plastic, 5" screen, 4G


И есть другая, где один товар может быть расположен на нескольких строках (на самом деле это представление из нескольких таблиц, но не суть):
product_full
product_id            |    category_name    | color     | other_values
--------------------------------------------------------------------------------
           1        |       phone         |    black |         exclusive, vip, gold
           1        |       mobile        |    red    |         exclusive, vip, silver
           1        |       telecom      |     gold  |         vip, gold, powerfull
           2        |       phone         |     black |         dark,cheap, etc.
           2        |       telecom      |      red    |         for girls, vip, exclusive


По первой таблице я ищу товары, подходящие по запросу, а во второй таблице структурированные данные для вывода во фронтенд. Каким образом я могу искать подходящие product_id в первой таблице, а потом эти id выбирать во второй? Мне кажется если я буду получать айди товара и потом запрашивать их в mysql , то это будет очень кривым решением.

P. S. Нужен поиск только по первой таблице, по второй искать не надо. Только выцепить данные по product_id
P. S. Кажется нашел решение , но меня оно не устраивает - слишком много дублирующихся полей нужно будет создавать, а так же выбирать много полей при поиске:
sql_query = SELECT product_values.name, product_values.values, \ 
product_full.category_name, product_full.color, product_full.other_values \
FROM product_values \
INNER JOIN product_full ON (product_full.product_id=product_values.product_id);

А при поиске указывать ... MATCH('@name Product @values screen')

Учитывая, что полей в таблицах много и они иногда дублируются, то как-то избыточно выглядит, хотя вполне рабочий вариант
  • Вопрос задан
  • 190 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
ищите сфинксом, а данные выбирайте в sql
Ответ написан
Ваш ответ на вопрос

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

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