1

我想不出正确的表达方式,也许如果我知道正确的短语,我可以正确地谷歌搜索,但到目前为止我还在苦苦挣扎。

我有两个表:类别,目录

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

我想知道我是否可以通过加入来做到这一点并尝试了

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,是效率低下还是有更好的方法来做这样的事情? 任何答案表示赞赏

4

1 回答 1

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;
于 2013-01-02T14:34:31.333 回答