在MySQL中显示已分配内容的类别

时间:2014-12-21 18:56:00

标签: php mysql

我有这些表格:

文章:

id: | name:     | ... | category:
1   | article 1 | ... | cat1
2   | article 2 | ... | cat2
3   | article 3 | ... | NULL
4   | article 4 | ... | NULL
5   | article 5 | ... | cat1

类:

id: | name:         | ... | url:
1   | Some Category | ... | cat1
2   | Kats          | ... | cat2
3   | Dogs          | ... | cat3
4   | Pigs          | ... | cat4

articles.categorycategories.url的外键。在博客页面中,我列出了所有文章(无论类别SELECT * FROM articles)。

现在我想制作类别列表菜单 - 这样我就可以查看分配给所选类别的文章了 (已完成:SELECT * FROM articles WHERE category='$some_url')。

为了避免在没有任何文章被分配到所选类别的情况下(在上面的示例中:没有任何文章被分配给狗或猪)而不是像以下消息:"此类别中没有文章& #34;我想只显示那些被分配了一些文章的类别。

例如,上面这将是"某些类别"和" kats"。

1 个答案:

答案 0 :(得分:1)

可能的查询可能是:

SELECT * FROM categories WHERE url IN (SELECT DISTINCT category FROM articles);

或者:

SELECT c.* FROM categories c LEFT JOIN articles a ON (c.url = a.category) WHERE a.category != '' GROUP BY c.url