2016-01-12 75 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會變得模糊不清,這就是我選擇使用子選擇的原因。