【问题标题】:Select categories from cat_table where main_table items with that category not empty从 cat_table 中选择类别,其中该类别的 main_table 项目不为空
【发布时间】:2012-12-16 18:53:17
【问题描述】:

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

我有两个表:类别、目录

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

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

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

【问题讨论】:

  • 用示例数据和输出解释

标签: mysql select join group-by


【解决方案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-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2020-08-01
    相关资源
    最近更新 更多