tutnet
@tutnet
Специалист по материализации ожиданий

Как объединить результат выполнения нескольких запросов SphinxQL, с группировкой по ключу?

На русском форуме сфинкса вопрос две недели провисел без ответа. Попробую спросить здесь.

Есть два запроса:
SELECT *, (10*weight()) AS qweight FROM elverIndex WHERE MATCH('ZONESPAN:(h1,h2)
ТоЧтоЯИщу') LIMIT 0,1000

и
SELECT *, (5*weight()) AS qweight FROM elverIndex WHERE MATCH('ZONESPAN:(h3,h4)
ТоЧтоЯИщу') LIMIT 0,1000


По отдельности они корректно отрабатывают. Мне нужно в одном запросе объединить их
результат с группировкой по полю id_attr, суммированием qweight и сортировкой по убыванию
суммарного веса.

Я делаю:

SELECT *, tweight AS SUM(`qweight`) FROM (SELECT *, (10*weight()) AS qweight FROM
elverIndex WHERE MATCH('ZONESPAN:(h1,h2) ТоЧтоЯИщу') LIMIT 0,1000 UNION SELECT *,
(5*weight()) AS qweight FROM elverIndex WHERE MATCH('ZONESPAN:(h3,h4) ТоЧтоЯИщу') LIMIT
0,1000) t GROUP BY `id_attr` ORDER BY `tweight` DESC LIMIT 0,1000;


На выходе получаю
ERROR 1064 (42000): sphinxql: syntax error, unexpected '(', expecting FROM or ',' near
'(`qweight`) FROM (SELECT *, (10*weight()).......


Вопрос что я делаю не так, вобщем-то не стоит(очевидный ответ - все). Стоит вопрос как
сделать правильно или хотябы где почитать о том как сделать правильно?
  • Вопрос задан
  • 3807 просмотров
Пригласить эксперта
Ответы на вопрос 2
@whats
tweight AS SUM(`qweight`)
Ответ написан
SphinxQL не умеет работать с подзапросами. Сам сталкивался с подобной проблемой, пришлось реализовывать 2 отдельных запроса, а потом уже обрабатывать ручками.
Ответ написан
Ваш ответ на вопрос

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

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