如何加入两个级联的多对多关系?
我有5张桌子:
ITEMS : id / name
ITEMS_TAXONOMIES : id / item_id / taxonomy_id
TAXONOMIES : id / attribute_id / adjective_id
ATTRIBUTES : id / name
ADJECTIVES : id / name
我需要一个SELECT来检索特定项目的所有相关属性 - 形容词对。
我正在使用Sphinx搜索引擎,我需要查找与这些项目相关的词语。
感谢您的提示...
答案 0 :(得分:1)
(我在狮身人面像论坛上的答案副本)
我认为最简单的解决方案是
sql_query = SELECT i.id, i.name , \
GROUP_CONCAT(CONCAT(at.name,' ',ad.name)) as taxonomies \
FROM items i \
LEFT JOIN items_taxonomies it ON (i.id = it.item_id) \
LEFT JOIN taxonomies t ON (t.id = it.taxonomy_id) \
LEFT JOIN attributes at ON (at.id = t.attribute_id) \
LEFT JOIN adjectives ad ON (ad.id = t.adjective_id) \
GROUP BY i.id \
ORDER BY NULL
只是搜索你不需要使用sql_attr_multi的单词。你可能会有点轻微 性能提升通过sql_joined_field进行索引,但上面更简单 先尝试一下。或者你可以将属性和形容词放在单独的字段中。但 以上功能可以搜索“属性栏”以获得特定的分类。
如果你想分组或取回列表,你可以将taxonomy_id粘贴到MVA中 结果中文档的相关分类法。