У меня есть две таблицы t1 и t2. t1 содержит некоторые данные сообщения, которые я настроил для поиска по t2, который содержит список ключевых слов с их индивидуальной оценкой. Теперь я добился умеренного успеха, и мне удалось вернуть все строки в t1, которые содержат любое ключевое слово в t2, с этим запросом.
SELECT DISTINCT t1.RowID, t1.ChatNo, t1.UserNo,
t1.Chat, t2.Keywords, SUM(t2.KeywordScore) AS Score
FROM t1
LEFT JOIN t2 ON t1.Chat LIKE CONCAT('%', + t2.Keywords , + '%')
WHERE t2.Keywords IS NOT NULL OR t1.ChatNo > 0 AND t1.UserNo > 0
GROUP BY t1.RowID, t2.Keywords
Теперь моя проблема в том, что он возвращает повторяющиеся результаты, если в сообщении чата есть несколько ключевых слов, и в каждой повторяющейся строке оно выбирает другое ключевое слово и этот рейтинг ключевых слов. Теперь из-за этого я считаю, что мой запрос пытается суммировать строки по отдельности, поэтому не могу их суммировать (поправьте меня, если я ошибаюсь). Например:
RowID ChatNo UserNO Chat Keywords Score
1 1 1 "...ex1 ex2 ex3" ex1 2
1 1 1 "...ex1 ex2 ex3" ex2 4
1 1 1 "...ex1 ex2 ex3" ex3 1
Теперь я бы хотел, чтобы он возвращал все ключевые слова, найденные в сообщении, в одной строке (или списке) и по-прежнему имел возможность СУММИРОВАТЬ значения ключевых слов, найденных в сообщении, и отображать итоговую сумму, например:
RowID ChatNo UserNO Chat Keywords Score
1 1 1 "...ex1 ex2 ex3" ex1, ex2, ex3 7
Я немного искал и тестировал, но на самом деле не нашел решения, которое помогло бы мне. Поэтому, если кто-нибудь может оказать мне некоторую помощь в том, как я могу продолжить, и получить запрос для вывода результатов в одной строке с суммированной оценкой, я был бы очень признателен.






Вам нужно использовать GROUP_CONCAT ()
Также distinct не кажется необходимым, поэтому я удалил его.
Попробуй это:
SELECT t1.RowID, t1.ChatNo, t1.UserNo,
t1.Chat, group_concat(t2.Keywords, ', '), SUM(t2.KeywordScore) AS Score
FROM t1
LEFT JOIN t2 ON t1.Chat LIKE CONCAT('%', + t2.Keywords , + '%')
WHERE t2.Keywords IS NOT NULL OR t1.ChatNo > 0 AND t1.UserNo > 0
GROUP BY t1.RowID, t1.ChatNo, t1.UserNo, t1.Chat
Большое вам спасибо, ему просто нужен SEPARATOR в разделе group_concat в SELECT.