请仔细阅读,因为我的英语不好,问题不是一个简单的答案!
我有一个像这样简单的结构:
table nodes
------------------------
nodeId | name
1 | Mazda Miata 2.0
2 | Red Cars
3 | Mazda Cars
4 | Sport cars
table associations
------------------------
nodeId | hasNodeId
1 | 2
1 | 3
1 | 4
3 | 4
3 | 1
并且我想根据表“association”指定的内容选择连接(在同一行)所有关联行的第一个表的任何行
问题是,将一个节点与一个节点连接起来,可以得到一个SINGLE相关节点的全文相关性:我想要的是所有相关节点的相关性谢谢
编辑,连接结果应该像你想象的那样,使用全文搜索:
nodeId | name | joinedName | fulltextRelev
1 | Mazda Miata 2.0 | Red Cars | 4.2
1 | Mazda Miata 2.0 | Mazda Cars | 2.3
1 | Mazda Miata 2.0 | Sport Cars | 3.2
前一个是一个抽象表,我真正想要的是获得唯一/不同的nodeId,以及上一个表的fulltextRelevance的总和...像这样:
nodeId | name | fulltextRelevSUM
1 | Mazda Miata 2.0 | 9.7
9.7 = 4.2 + 2.3 + 3.2
答案 0 :(得分:1)
你只需要按照你的nodeId进行分组:
SELECT
nodeId, name, SUM(fulltextRelevSUM) AS fulltextRelevSum
FROM
/*your already done work here*/
GROUP BY nodeId
答案 1 :(得分:0)
SELECT
n.nodeID,
n.name,
n2.name as joinedName,
MATCH(n.name) AGAINST(n2.name) AS fulltextRelev
FROM NODES n
LEFT OUTER JOIN ASSOCIATIONS a
ON n.nodeID = a.nodeID
LEFT OUTER JOIN nodes n2
ON n2.NODE_ID = a.hasNodeID
WHERE n.nodeID = 1
我不完全理解您的文字相关性部分。你能进一步解释一下吗?上面的查询将为您提供所需的前4行,第二部分的查询应该很容易