代码之家  ›  专栏  ›  技术社区  ›  waiwai933

COUNT正在对行进行意外分组

  •  0
  • waiwai933  · 技术社区  · 15 年前

    items 跟踪可以存储的不同类型的项目。

    item_type  item_name  last_stock
    
       1         cake      2010-08-10
       2         fruit     2010-08-07
       3         soda      2010-08-07
       4         water     2010-08-09
    

    individual_items 跟踪每个特定项目。

       id   item_type
    
        1          1 
        2          2        
        3          1           
    

    我在MySQL中的查询:

    SELECT i.item_type, i.item_name, COUNT(j.id)
    FROM items i
    LEFT OUTER JOIN individual_items j
    ON i.item_type = j.item_type
    GROUP BY j.item_type
    

    然而 COUNT(j.id)

    item_type    item_name  COUNT(j.id)
        1           cake         2
        2           fruit        1
        3           soda         0   
    

    我想应该是第四排 4 water 0 没有出现是因为 COUNT() LEFT OUTER JOIN

    4 回复  |  直到 15 年前
        1
  •  3
  •   Pavel Morshenyuk    15 年前

    SELECT i.item_type, i.item_name, COUNT(j.id)
    FROM items i
    LEFT OUTER JOIN individual_items j
    ON i.item_type = j.item_type
    GROUP BY i.item_type, i.item_name
    

    更新:我已经在本地mysql服务器上进行了测试,上面的代码应该可以正常工作

        2
  •  1
  •   Ryan Brunner    15 年前

    你的 GROUP BY

        3
  •  0
  •   dockeryZ Yacoby    15 年前

    尝试使用右连接。

        4
  •  0
  •   SQLMenace    15 年前

    SELECT i.item_type, i.item_name, COUNT(j.id)
    FROM items i
    LEFT OUTER JOIN individual_items j
    ON i.item_type = j.item_type
    GROUP BY i.item_type,i.item_name