MYSQL - 来自table1的Count和GROUP,并从table2获取信息

时间:2016-01-12 13:39:18

标签: mysql sql

我正在努力解决我无法按照自己的意愿工作的MySQL查询。

table1我有co_id,名称,代码,产品,logindate。

table2我有pr_id,productname,productno,price。

我想对table1中的PRODUCT进行计数和分组,因此我可以看到已经选择了多少产品1,2,3等。

但是当我在页面上列出结果时,我需要在GROUP搜索中为每个ID编号提供productname和productno。 table1.product与table2.pr_id

连接在一起

这是我到目前为止所做的,但我认为我错过了INNER JOIN或类似的东西,对吗?

SELECT
  codes.pickedgift,
  products.productno,
  products.productname,
  COUNT(codes.pickedgift) as num
FROM
  codes,
  products
GROUP BY codes.pickedgift
ORDER BY codes.pickedgift

2 个答案:

答案 0 :(得分:0)

你错过了连接条件,当你加入2个表时,你应该将table1中的主键链接到另一个表中的外键,所以你的查询可以是:

SELECT
  codes.pickedgift,
  products.productno,
  products.productname,
  COUNT(codes.pickedgift) as num
FROM
  codes INNER JOIN products ON codes.product = products.pr_id

GROUP BY codes.pickedgift
ORDER BY codes.pickedgift

答案 1 :(得分:0)

您应该为此查询使用子选择。

-- assuming I have your table structure correct.
SELECT p.productno, p.productname, num
FROM (SELECT codes.pickedgift, COUNT(codes.pickedgift) as num 
      FROM codes 
      GROUP BY codes.pickedgift) g
JOIN products p ON p.id = g.pickedgift
ORDER BY g.pickedgift

您必须确定的另一件事是,如果您使用的是分组依据,则select中的字段必须是group by中的字段或聚合。 MySQL允许您包含不属于group-by / aggregate的列,关于应该表示哪个值productnoproductname变得模棱两可,这就是为什么我选择了子选择的原因