2013-04-25 44 views
0

我正在使用以下查詢來對結果進行篩選和評分,這些結果已分配給某些正在完美工作的類別。但是,如果我嘗試進行另一次連接,爲了能夠將計分標記與計分進行比較,我會遇到一個問題,即將返回大量未分配給這3個類別的結果。多個mysql連接導致查詢問題

這裏的工作查詢...

 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 

就好像下面一行停止時,我想補充工作第二次加入

HAVING COUNT(c.c_ID) = 3 

我在這裏很茫然,任何幫助都會非常讚賞iated!

回答

1

count()失敗,因爲新連接中有多行匹配原始數據。 Count()統計非空值。所以,如果有兩場比賽每個ID,那麼你會得到6行 - 和6

計數,我認爲下面將解決您的問題:

having count(distinct c.c_id) = 3 
+0

三江源這麼多!這一直讓我瘋狂 – 2013-04-25 14:04:03