請教各位高手,關於新增子查詢數量count()欄位的問題,我一共有兩個表
表1:menber_data
MID| Name
1 | 小明
2 | 小華
3 | 小美
4 | 小強
表2:order_data
OID| MID |PID
1 | 1 | 2
2 | 1 | 2
3 | 2 | 1
4 | 3 | 1
希望查詢列出 所有會員姓名與對應訂單總數量 如:
MID| 訂單數量
1 | 2
2 | 1
3 | 1
4 | 0
我下sql語法如下:
Select M.MID (select count(*) from order_data as O where O.MID=M.MID) from menber_data as M
上面語句我在W3School 測試看起來是可行的。
但我在我的主機上跑,結果資料庫就跑超久,當機了… 是資料筆數很多的關係嗎? 請問該如何解呢~ 我找資料找了好久,感恩大德
看起來可行是因為資料量太少,可以先把會員的訂單總數先算好後再Join,這樣應該會快一點
select *
into #member_data
from (
values
(1, '小明'),
(2, '小華'),
(3, '小美'),
(4, '小強')
) as T(MID, Name)
select *
into #order_data
from (
values
(1, 1, 2),
(2, 1, 2),
(3, 2, 1),
(4, 3, 1)
) as T(OID, MID, PID)
with temp as (
select MID, count(*) as counts
from #order_data
group by MID
)
select M.MID, M.Name, M.counts
from #member_data M
inner JOIN temp T on M.MID = T.MID
你輸出只要MID沒有要姓名,那直接Group by不就好了?
Select MID, count(OID) from order_data group by MID
SELECT M.MID, O.Total
FROM menber_data AS M
LEFT JOIN (
SELECT MID, COUNT(*) AS Total
FROM order_data
GROUP BY MID
) AS O ON O.MID = M.MID;