Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分组后特定列出现的次数的MySQL计数_Mysql_Sql - Fatal编程技术网

分组后特定列出现的次数的MySQL计数

分组后特定列出现的次数的MySQL计数,mysql,sql,Mysql,Sql,这是我的疑问: SELECT mh.super_category AS parentDescription, mh.super_category AS parentSlug, mh.description AS subDescription, mh.slug AS subSlug, COUNT(mh.slug) AS qty, cg.Description AS nestedSubDescription, cg.slug AS

这是我的疑问:

SELECT 
    mh.super_category AS parentDescription, 
    mh.super_category AS parentSlug, 
    mh.description AS subDescription, 
    mh.slug AS subSlug, 
    COUNT(mh.slug) AS qty,
    cg.Description AS nestedSubDescription, 
    cg.slug AS nestedSubSlug 
FROM Categories AS c
    INNER JOIN Category_Groups AS cg ON (c.Category_Group=cg.CategoryCode) 
    INNER JOIN menu_heading AS mh ON (cg.MenuHeading = mh.id)
    INNER JOIN tbl_store_brands ON (tbl_store_brands.categoryID = c.pkID) 
WHERE c.seq <> 127 
GROUP BY cg.slug 
ORDER BY mh.super_category, mh.seq ASC, cg.seq, c.seq, c.Category_Group, c.Category_ID
qty列中返回的数字是mh.slug在没有组条件的情况下出现的次数,但我实际想要的是它在查询中出现的次数,即洗衣机干燥器的4次

我怎样才能做到这一点

新样本结果

+--------------------------+--------------------------+---+------------------------------------+-------------------------------------------+
| Refrigerators | refrigerators | French Door              | french-door              | 9 | Cabinet Depth: French Door         | cabinet-depth-french-door-refrigerators   |
| Refrigerators | refrigerators | Side by Side             | side-by-side             | 9 | Side x Side: with Dispenser        | side-by-side-with-dispenser-refrigerators |
| Refrigerators | refrigerators | Bottom Freezer           | bottom-freezer           | 9 | Bottom Freezer                     | bottom-freezer-refrigerators              |
| Refrigerators | refrigerators | Top Mount                | top-mount                | 9 | Top Freezer                        | top-freezer-refrigerators                 |
| Refrigerators | refrigerators | Built In                 | built-in                 | 9 | Built-in Columns Refrigerator Only | built-in-columns-refrigerator-only        |
| Refrigerators | refrigerators | Specialty                | specialty                | 9 | Wine Storage                       | wine-storage                              |
| Refrigerators | refrigerators | Freezers                 | freezers                 | 9 | Icemaker Kits                      | icemaker-kits-refrigerator                |
| Refrigerators | refrigerators | Refrigerator Accessories | refrigerator-accessories | 9 | Refrigerator Accessories           | refrigeration-accessories                 |
+---------------+---------------+--------------------------+--------------------------+---+------------------------------------+-------------------------------------------+
对于你的第二个问题,试试这个,让我知道它是否有效。我没有时间100%地考虑它,我不知道关系类型,所以这里只是尝试和错误:

SELECT 
    mh.super_category AS parentDescription, 
    mh.super_category AS parentSlug, 
    mh.description AS subDescription, 
    mh.slug AS subSlug, 
    cg.Description AS nestedSubDescription, 
    cg.slug AS nestedSubSlug 
    (SELECT COUNT(countCg.*) FROM Categories AS c2 
          INNER JOIN Category_Groups AS countCg 
          INNER JOIN tbl_store_brands tsb2 ON (tsb2 .categoryID = c2.pkID)
      WHERE countCg.MenuHeading = mh.id) As qty
FROM Categories AS c
    INNER JOIN Category_Groups AS cg ON (c.Category_Group=cg.CategoryCode) 
    INNER JOIN menu_heading AS mh ON (cg.MenuHeading = mh.id)
    INNER JOIN tbl_store_brands ON (tbl_store_brands.categoryID = c.pkID) 
WHERE c.seq <> 127 
GROUP BY cg.slug 
ORDER BY mh.super_category, mh.seq ASC, cg.seq, c.seq, c.Category_Group, c.Category_ID

您通常按所选列分组,但设置函数的参数除外。首先,您应该重写SQL,因为您误用了MySQL GROUP BY功能。。我已经编辑了我的查询,以便GROUPBY子句是查询中的一列。希望我能正确理解您的意思。尝试将COUNTmh.slug替换为qty,方法是从类别组中选择COUNT*作为countCg,其中countCg.MenuHeading=mh.id作为qty这是假设每个mh.id都有一个唯一的mh.slug。@Roemer很好,谢谢,因为这是一条注释,我不能将其作为答案,如果您想将其添加为答案,我将接受它。谢谢,如果可以的话,我还有一个后续问题,您的代码完全按照它应该的方式工作,但我注意到一个问题,即加入tbl_store_brands不包括类别组,因为商店没有该品牌,所以在冰箱上,例如,您的代码返回9,这是正确的,因为表中有9个,但商店实际上只储存了8个。从tel_store_品牌到Category_组的唯一链接是通过Categories表,当我在代码中包含该连接时,计数为1。有没有办法克服这个问题?我的问题中包含了一组示例结果。将其设置为左连接而不是内部连接,这样就可以了。内部联接只获取两个表中都有记录的记录,左联接获取左表中的所有记录,而不管右表中是否有记录。我只希望所有表中都有匹配的记录,问题是计数数量返回到多个记录,而不限于主查询返回的记录。这有道理吗?啊,对不起,我误解了。这越来越复杂。请尝试添加的额外解决方案,并让我知道它是否有效。如果没有表的概述,就无法确定这是否可行,因为我不知道表之间的关系。
SELECT 
    mh.super_category AS parentDescription, 
    mh.super_category AS parentSlug, 
    mh.description AS subDescription, 
    mh.slug AS subSlug, 
    (SELECT COUNT(*) FROM Category_Groups AS countCg WHERE countCg.MenuHeading = mh.id) As qty,
    cg.Description AS nestedSubDescription, 
    cg.slug AS nestedSubSlug 
FROM Categories AS c
    INNER JOIN Category_Groups AS cg ON (c.Category_Group=cg.CategoryCode) 
    INNER JOIN menu_heading AS mh ON (cg.MenuHeading = mh.id)
    INNER JOIN tbl_store_brands ON (tbl_store_brands.categoryID = c.pkID) 
WHERE c.seq <> 127 
GROUP BY cg.slug 
ORDER BY mh.super_category, mh.seq ASC, cg.seq, c.seq, c.Category_Group, c.Category_ID
SELECT 
    mh.super_category AS parentDescription, 
    mh.super_category AS parentSlug, 
    mh.description AS subDescription, 
    mh.slug AS subSlug, 
    cg.Description AS nestedSubDescription, 
    cg.slug AS nestedSubSlug 
    (SELECT COUNT(countCg.*) FROM Categories AS c2 
          INNER JOIN Category_Groups AS countCg 
          INNER JOIN tbl_store_brands tsb2 ON (tsb2 .categoryID = c2.pkID)
      WHERE countCg.MenuHeading = mh.id) As qty
FROM Categories AS c
    INNER JOIN Category_Groups AS cg ON (c.Category_Group=cg.CategoryCode) 
    INNER JOIN menu_heading AS mh ON (cg.MenuHeading = mh.id)
    INNER JOIN tbl_store_brands ON (tbl_store_brands.categoryID = c.pkID) 
WHERE c.seq <> 127 
GROUP BY cg.slug 
ORDER BY mh.super_category, mh.seq ASC, cg.seq, c.seq, c.Category_Group, c.Category_ID