次のクエリを使用して、現在完全に機能している特定のカテゴリに割り当てられた結果をフィルタリングしてスコア付けしています。ただし、タグの一致をスコアリングに含めることができるように別の結合を実行しようとすると、3 つのカテゴリに割り当てられていない多くの結果が返されるという問題が発生します。
これが作業クエリです...
SELECT DISTINCT results.*,
(
3*(MATCH(body) AGAINST('*' IN BOOLEAN MODE)) +
5*(MATCH(title) AGAINST('*' IN BOOLEAN MODE)) +
1*usefulness +
30*(MATCH(body) AGAINST('""' IN BOOLEAN MODE)) +
20*(MATCH(title) AGAINST('""' IN BOOLEAN MODE)) +
5*shares
) AS score
FROM results
INNER JOIN categories c on results.ID = c.RESULT_ID
WHERE c.name in ('refinance', 'condo', 'usda')
AND ( results.scope = 'all' OR results.scope = 'hi' )
AND published = 1
GROUP BY results.ID
HAVING COUNT(c.c_ID) = 3
ORDER BY score DESC
LIMIT 8 OFFSET 0
カテゴリの結果の下に次の行を追加すると、問題が発生します
INNER JOIN tags ON results.id = tags.result_id
2番目の結合を追加すると、次の行が機能しなくなったかのようです
HAVING COUNT(c.c_ID) = 3
私はここで途方に暮れています。どんな助けでも大歓迎です!