从cat_table中选择类别,其中具有该类别的main_table项目不为空

时间:2013-01-02 11:46:25

标签: mysql select join group-by

我想不出用这句话来表达的正确方法,也许如果我知道正确的短语,我可以正确使用谷歌,但到目前为止我还在苦苦挣扎。

我有两个表:类别,目录

在用户选择类别的页面上,我只想显示存在该类别的目录项的类别。

我想知道我是否可以通过加入来尝试

SELECT
wedding_directory_cats.id,
wedding_directory_cats.name,
wedding_directory.id AS d_id
FROM wedding_directory_cats
JOIN wedding_directory ON wedding_directory.category = wedding_directory_cats.id

但是这会返回每个目录项的类别,所以我不止一次地使用相同的类别。就像我写这篇文章一样,我开始认为我最终可以使用GROUP BY,但这仍然意味着它必须先将它们全部返回然后GROUP BY,这是效率低下还是有更好的方法来做这样的事情?任何答案赞赏

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT wdc.id, wdc.name, wd.id AS d_id
FROM wedding_directory_cats wdc
INNER JOIN (SELECT id, category FROM wedding_directory GROUP BY category) wd ON wdc.id = wd.category ;

SELECT wdc.id, wdc.name, GROUP_CONCAT(wd.id) AS d_id
FROM wedding_directory_cats wdc
INNER JOIN wedding_directory wd ON wdc.id = wd.category 
GROUP BY wd.category;