2012-04-02 45 views
0

請仔細閱讀,因爲我的英語不是很好,問題並沒有一個簡單的答案!多行加入了全文檢索

我有一個簡單的結構是這樣的:

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 

,我想選擇第一個表連接(在同一行)中的所有相關行的任何行,根據是什麼表中規定「協會」

問題是,加入與一個節點一個節點給了我一個相關節點的全文相關性:我想是所有相關節點的相關

謝謝

編輯,連接結果應該是你想象的這樣,使用全文搜索:

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 

前一個是一個抽象的表,我真正想要的是讓獨特/不同的節點ID,用上表中的fulltextRelevance的總和......這樣的:

nodeId | name     |  fulltextRelevSUM 
    1 | Mazda Miata 2.0  |  9.7 

9.7 = 4.2 + 2.3 + 3.2 
+0

我認爲這將是更好的首先你自己的問題的決心展現,或至少預期輸出 – golgofa 2012-04-02 12:31:03

+0

我不知道如何解決,很明顯,我不能參加行與不義的行數,但可能與GROUP BY,或類似的東西,我可以得到全球全文相關 – skyline26 2012-04-02 12:38:36

+0

1 |馬自達Miata 2.0 |相關性2.3 | 「mazda」.... 1 |馬自達Miata 2.0 |相關性4.4 | 「紅」等等......我想單行,讓我按相關2.3 + 4.4,因爲我想要做的ORDER BY globalRelevance DESC – skyline26 2012-04-02 12:47:15

回答

1

你只要按你的節點ID是這樣的:

SELECT 
nodeId, name, SUM(fulltextRelevSUM) AS fulltextRelevSum 
FROM 
/*your already done work here*/ 
GROUP BY nodeId 
+0

我無法獲得總和 – skyline26 2012-04-02 18:50:55

+0

@ toPeerOrNotToPeer你是什麼意思與「我無法得到的總和」?告訴我你的查詢 – fancyPants 2012-04-03 07:53:48

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行,在第二部分的查詢應該很容易