使用Sphinx过滤多对多int值

时间:2015-11-30 22:59:05

标签: php mysql sphinx

在PHP中使用SphinxAPI

我有2张表,通过第三张表有多对多关系。玩家可以参加多个活动。

Gamers
- id (UINT)
- username (STRING)
- category (UINT)
- lat (FLOAT)
- lng (FLOAT)

Events
- id (UINT)
- name (STRING)

gamers_events
- gamer_id (UINT)
- event_id (UINT)

我在Sphinx上看到过MVA,但我不确定这是怎么回事。

这就是我在游戏玩家指数中的含义

sql_query           = SELECT g.id\
                            , g.username\
                            , g.category\
                        FROM gamer g\
                        /* some LEFT JOIN with other tables */
                        GROUP BY g.id

sql_attr_multi      = uint event from query; SELECT id, name FROM event

我不确定如何将事件表加入游戏玩家表。

我想通过搜索游戏玩家时的事件ID来设置SetFilter。不是通过事件的名称,只是id。

1 个答案:

答案 0 :(得分:1)

要么......

sql_query = SELECT g.id, \
      GROUP_CONCAT(ge.event_id) AS event, \
       ...
      FROM gamer g\
          LEFT JOIN gamers_events ge ON (ge.gamer_id = g.id) \
          /* some LEFT JOIN with other tables */
      GROUP BY g.id \
      ORDER BY NULL
sql_attr_multi      = uint event from field; 

(狮身人面像可从柱中提取)

OR(sql_query不变)......

sql_attr_multi      = uint event from query; SELECT gamer_id, event_id FROM gamers_events ORDER BY gamer_id

在任何一种情况下你都不需要事件表,只需要gamers_events表。