我正在努力解决我无法按照自己的意愿工作的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
答案 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的列,关于应该表示哪个值productno
和productname
变得模棱两可,这就是为什么我选择了子选择的原因