2016-01-12 76 views
0

我挣扎着一个MySQL查询,我不能按我的意愿工作。MYSQL - 从table1计数和组,并从表2获取信息

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

in table2我有pr_id,productname,productno,价格。

我想算和组从表1的产品,所以我可以看到有多少已回升例如产品1,2,3等

但是当我列出了页面上的结果,我需要产品名称和productno,用于GROUP搜索中的每个ID号码。 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

您需要一个连接条件。 (另外,使用现代显式的'JOIN'语法!) – jarlh

+0

当代码中有实际的表名时,请不要谈论table1和table2。它使事情变得不那么清楚。 –

回答

0

你错过了加盟条件,当你加入2个表,你应该在表1链路主键到另一个表的外键,这样你的查询可以是:

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 
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 

你必须确保的另一件事是,如果您使用的是组通过,在你选择的领域必须是由集团在田间地头,或聚集。 MySQL允许您包含不属于group-by/aggregate的列,因此应该表示哪个值productnoproductname会变得模糊不清,这就是我选择使用子选择的原因。