2015-08-28 1 views
0

У меня есть таблицы:Как создать правильный индекс для сфинкса

product 
| id | shop_id | name | 
| 1 | 1  | p1 | 
| 2 | 1  | p2 | 
| 3 | 2  | p3 | 
etc 

shop 
| id | name | 
| 1 | s1 | 
| 2 | s2 | 
| 3 | s3 | 
| 4 | s4 | 
etc 

country 
| id | name | 
| 1 | russia | 
| 2 | usa | 
etc 

shop_country 
|id | shop_id | country_id | 
| 1 | 1  | 1  | 
| 2 | 1  | 2  | 
| 3 | 2  | 1  | 

мне нужно, чтобы получить товары, которые доступны в выбранной стране.

это запрос работы с MySQL:

SELECT * 
FROM product AS p 
LEFT JOIN shop_country sc ON (p.shop_id = sc.shop_id) 
WHERE product.status = 1 mc.country_id = 3 

Я создал индекс:

SELECT product.id as id, product.shop_id \ 
FROM product \ 
LEFT JOIN shop_country sc ON (product.shop_id = sc.shop_id) \         
GROUP BY product.id 

но дает неверный результат

Что мне нужно, чтобы получить это в Сфинкса ?

ответ

1
GROUP BY product.id 

означает, что вы имеете много страны на тот же продукт

SELECT product.id as id, product.shop_id \ 

Нет групповых функций

Так заменить

SELECT product.id as id, group_concat(product.shop_id) \ 

и попытаться установить shop_id в sql_attr_multi