2012-04-21 60 views
0

表:顯示類別無需重複每個帶有帖子

cat_id 
cat_name 

比類別 - 職位關係表cat_rel

cat_rel_id 
cat_id 
post_id 

而且帖子表:

post_id 
post_title 
post_content 

現在我在所有這些表中都有數據,我需要抽出類別而不重複那些超過1個帖子的數據。如果它有超過1個帖子,我會重複類別重複,例如。類別,如:

PHP,Python和C++,JAVA,紅寶石,如果我有PHP下2個職位

,我將獲得:

PHP 蟒蛇 PHP 的Java

,這是我運行的查詢:

SELECT categories.cat_name, cat_rel.post_id 
FROM categories 
LEFT JOIN cat_rel ON cat_rel.cat_ID = categories.cat_ID 

有關使這些類別不重複的任何幫助,將appre ciated

回答

0

這將列出類別,有超過一個職位:

SELECT categories.cat_name as Category 
,  count(distinct cat_rel.post_id) as PostCount 
FROM categories 
LEFT JOIN cat_rel 
ON  cat_rel.cat_ID = categories.cat_ID 
GROUP BY categories.cat_name 
HAVING count(distinct cat_rel.post_id) > 1 
+0

OP希望取消所有類別,而不要重複那些帖子超過1個的類別,而不要將所有類別的帖子拉出多個帖子。 – 2012-04-21 14:02:25

+0

@MGA:那爲什麼他加入到'cat_rel'呢?只需從類別中選擇cat_name就可以提取所有類別。 – Andomar 2012-04-21 14:10:34

+0

我不知道,但這是他在他的問題中所說的,任何我認爲你應該從查詢中刪除'HAVING count(distinct cat_rel.post_id)> 1'的方法。 – 2012-04-21 14:12:44

0

試試這個:

SELECT DISTINCT categories.cat_name, cat_rel.post_id 
FROM categories 
LEFT JOIN cat_rel ON cat_rel.cat_ID = categories.cat_ID 
+0

'distinct'適用於所有列,所以'distinct cat_name,post_id'仍然會重複這個類別 – Andomar 2012-04-21 14:11:13