2012-04-02 4 views
0

, пожалуйста, внимательно прочитайте, потому что мой английский не очень хорош, и вопрос нелегкий ответ!присоединиться к MULTIPLE строк для полнотекстового поиска

У меня есть простая структура, как это:

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 

предыдущих является абстрактной таблицей, то, что я действительно хочу, чтобы получить уникальное/отчетливое NodeId, с сумма fulltextRelevance предыдущей таблицы ... как это:

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

9.7 = 4.2 + 2.3 + 3.2 
+0

Я думаю, что будет лучше сначала показать вашу проблему, или, по крайней мере, ожидаемый результат – golgofa

+0

Я не знаю как разрешить, очевидно, что я не могу присоединиться к строке с не определенным количеством строк, но, возможно, с GROUP BY или что-то в этом роде, я могу получить глобальную актуальность полнотекстового значения – skyline26

+0

1 | Mazda Miata 2.0 | актуальность 2.3 | «мазда» .... 1 | Mazda Miata 2.0 | релевантность 4.4 | «красный» и т. д. ... я хочу одну строку, которая дает мне релевантность 2.3 + 4.4, потому что я хочу делать ORDER BY globalRelevance DESC – skyline26

ответ

1

Вы просто группировать вашим NodeId, как это:

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

Я не могу получить сумму – skyline26

+0

@ toPeerOrNotToPeer, что вы имеете в виду: «Я не могу получить сумму»? покажите мне ваш запрос – fancyPants

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 строки, запрос на второй части должен быть легким

Смежные вопросы