2016-11-01 46 views
0

的總和加盟我有2個表:MySQL的:查找列的計數從不同的列

+----------+------------+------------+ 
|session_id| product_id | orders  | 
+----------+------------+------------+ 
| 1  | 11   | 0   | 
| 1  | 22   | 2   | 
| 1  | 34   | 1   | 
| 2  | 11   | 0   | 
| 3  | 43   | 0   | 
| 3  | 11   | 1   | 
+----------+------------+------------+ 

表B:

+-----------+--------------+ 
|product_id |category_id | 
+-----------+--------------+ 
| 11  | 100  | 
| 12  | 101  | 
| 34  | 102  | 
| 22  | 103  | 
| 43  | 104  | 
| 13  | 105  | 
+-----------+--------------+ 

我要的是一個表,包括每個session_id中有多少個category_id,以及該訂單中的總訂單session_id

+-----------+--------------------+--------+ 
|session_id | count(category_id) | orders | 
+-----------+--------------------+--------+ 
| 1   | 3     | 3  | 
| 2   | 1     | 0  | 
| 3   | 2     | 1  | 
+-----------+--------------------+--------+ 

我想:

select a.session_id,count(b.category_id),sum(a.orders) from a 
join table b 
on a.product_id = b.product id 

是此查詢嗎?

請幫幫我。我是一個初學者

+0

你有沒有嘗試過這麼遠! –

+0

@ubaidashraf先生,我是一個初學者,我正在考慮在兩張表之間進行連接,其中a.product_id = b。產品ID –

+0

@ubaidashraf先生,請看看我編輯我的問題,代碼 –

回答

2
I tried with 2 methods  
    1)...SELECT a.session_id,COUNT(b.category_id),SUM(a.orders) FROM #a a 
     LEFT JOIN #b b 
     ON a.product_id = b.product_id GROUP BY a.session_id 
GROUP BY a.Session_ID 

     2...) SELECT D.SESSION_ID,COUNT(CATEGORY_ID),SUM(D.ORDERS) FROM #A D 

     OUTER APPLY 
      ( 
      SELECT CATEGORY_ID,PRODUCT_ID FROM #B B 
      WHERE D.PRODUCT_ID = B.PRODUCT_ID 
      ) A 
      GROUP BY D.SESSION_ID 
     GO 
2

當然你不參加表格,然後與你想要的字段組合。

SELECT a.Session_ID, Count(Category_ID) CategoryCount, SUM(Orders) NumberOfOrders 
FROM a 
LEFT OUTER JOIN b 
ON a.Product_ID = b. Product ID 
GROUP BY a.Session_ID 

個人,因爲我沒有對數據結構使用我的左外連接,因爲萬一PRODUCT_ID沒有類者優先的任何信息,則沒有該產品的結果將顯示。

(除非每個產品應該有一個類別,或者用戶只需要擁有一個類別的產品,你必須使用INNER JOIN

+1

你爲什麼使用LEFT OUTER JOIN?請解釋。 –

+0

我更新了我的答案...謝謝你提到它 – Zeina

2

只需使用左連接的顯示,通過使用從表一 所有結果只有加入其表演結果才存在於兩個表中。

SELECT a.session_id,COUNT(b.category_id),SUM(a.orders) FROM a 
LEFT JOIN b 
ON a.product_id = b.product_id GROUP BY a.`session_id` 
+0

你錯過了組羣!這會導致錯誤 – Zeina