台灣最大程式設計社群網站
線上人數
1437
 
會員總數:246203
討論主題:189776
歡迎您免費加入會員
討論區列表 >> ASP >> 請問一個table引用兩個SQL
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問一個table引用兩個SQL
價值 : 20 QP  點閱數:1235 回應數:5
樓主

repair168
初學者
432 293
1132 250
發送站內信

各位好:

我有一個MySql,裡面有Table為purchse,兩個欄位分別是購買次數(Buys),和退貨次數(RET)

我要製作一個統計表,必須能同時顯示每個公司購買次數和退貨次數;
如果單獨撈取購買次數,我知道是
Select company,buys,count(*) from purchase where Buys<>0 group by company,
反之為 Select company,buys,count(*) from purchase where RET<>0 broup by company

可是現在我有辦法用同一個SQL語法完成以上兩個需求嗎?若是分成兩個SQL,之前我個人經驗
是要夾在不同的<TABLE></TABLE>,若是同一個TABLE使用SQL1和SQL2,就會出現錯誤

不過因為統計資料格式所需,是否有辦法放再同一個TABLE內

謝謝~


本篇文章發表於2014-06-04 17:10
1樓
回應

風燭殘年
捐贈 VP 給 風燭殘年 檢舉此回應
SELECT A.Company, A.BuysCount, B.RETCount
FROM
(Select company, count(*) as BuysCount from purchase where Buys<>0 group by company) A
LEFT JOIN
(Select company, count(*) as RETCount from purchase where RET<>0 group by company) B on A.Company=B.Company
本篇文章回覆於2014-06-04 22:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
有點不太明白
表單資料中購買次數和退貨次數是0或1,還是可能大於1
如果購買次數和退貨次數可能大於1,那同一間公司是只有一筆記錄還是會有多筆記錄
本篇文章回覆於2014-06-05 09:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
原SQL理論上應該是不能執行的
而且用count會讓直覺次數是只有0或1兩種
如果是同一公司多筆資料,而且次數可能大於1
應該可以這樣寫
SELECT `company`,SUM(`Buys`),SUM(`RET`) FROM `purchase` GROUP BY `company`

話說這個問題應該去資料庫的MySQL版發問吧
本篇文章回覆於2014-06-05 09:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小企
檢舉此回應
在欄位上 用子查詢就好了,只是sql會較長, 如

Select company,buys,count(*) from purchase where Buys<>0 group by company,
反之為 Select company,buys,count(*) from purchase where RET<>0 broup by company
=>以下是我的解法,別名 我是 取'Buys<>0' 'RET<>0',你要改中文也可以

select
A.company
,(Select a.count(*) from purchase a where A.company=a.company and a.Buys<>0 group by a.company ) 'Buys<>0'
,(Select b.count(*) from purchase b where A.company=b.company and b.Buys<>0 group by a.company ) 'RET<>0'

form
purchase A
本篇文章回覆於2015-02-15 13:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

小企
檢舉此回應
在欄位上 用子查詢就好了,只是sql會較長, 如

Select company,buys,count(*) from purchase where Buys<>0 group by company,
反之為 Select company,buys,count(*) from purchase where RET<>0 broup by company
=>以下是我的解法,別名 我是 取'Buys<>0' 'RET<>0',你要改中文也可以

select
A.company
,(Select a.count(*) from purchase a where A.company=a.company and a.Buys<>0 group by a.company ) 'Buys<>0'
,(Select b.count(*) from purchase b where A.company=b.company and b.RET<>0 group by a.company ) 'RET<>0'

form
purchase A
本篇文章回覆於2015-02-15 19:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.