我设法有一个查询获取特定用户的朋友的所有朋友和朋友。我有一个用户表和一个友谊连接表。为了简单起见,我们只需说用户表只有一个主键。友谊表具有user_id和friend_id列。查询如下:Sphinx索引器自定义查询sql_attr_multi
"SELECT DISTINCT friends.user_id, friends.friend_id, users.*
FROM FRIENDSHIPS friends, USERS
WHERE USERS.id = friends.friend_id AND friends.user_id = #{u.id}
UNION
SELECT DISTINCT fof.user_id, fof.friend_id, users.*
FROM FRIENDSHIPS friends, FRIENDSHIPS fof, USERS
WHERE USERS.id = fof.friend_id AND friends.friend_id = fof.user_id AND friends.user_id = #{u.id}"
u.id是我希望得到朋友的所有朋友和朋友的用户的id。
此查询工作得很好,但我想将其转换为sphinx的sql_attr_multi可用的查询。我试图直接把它像这样:
sql_attr_multi = uint fwfof from query; \
SELECT DISTINCT `friends`.`user_id`, `friends`.`friend_id`, `users`.`id` \
FROM `friendships` friends, `users` \
WHERE `users`.`id` = `friends`.`friend_id` AND `friends`.`user_id` = $id \
UNION \
SELECT DISTINCT `fof`.`user_id`, `fof`.`friend_id`, `users`.`id` \
FROM `friendships` `friends`, `friendships` `fof`, `users` \
WHERE `users`.`id` = `fof`.`friend_id` AND `friends`.`friend_id` = `fof`.`user_id` AND `friends`.`user_id` = $id
但这显然失败。
如何让这个查询可用于sphinx的索引器?
预先感谢任何能够指引我正确方向的事情。
感谢您的提示,但我仍然不确定如何去做这件事。这意味着我需要创建一个不同的查询? – 2010-11-23 21:13:55