2012-04-21 61 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