我有这些表格:
文章:
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.category
是categories.url
的外键。在博客页面中,我列出了所有文章(无论类别SELECT * FROM articles
)。
现在我想制作类别列表菜单 - 这样我就可以查看分配给所选类别的文章了
(已完成:SELECT * FROM articles WHERE category='$some_url'
)。
为了避免在没有任何文章被分配到所选类别的情况下(在上面的示例中:没有任何文章被分配给狗或猪)而不是像以下消息:"此类别中没有文章& #34;我想只显示那些被分配了一些文章的类别。
例如,上面这将是"某些类别"和" kats"。
答案 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