我很困惑如何獲得每個項目的購買數量和。加入3個表,從2個表(MYSQL)的SUM()值
SELECT item_id, item_name, sum(backing_status) purchase_count, sum(vote) vote_count
FROM Items
LEFT JOIN Purchases ON Items.item_id=Purchases.item_id
LEFT JOIN Votes ON Items.item_id=Votes.item_id
where purchase_status='bought'
group by Items.item_id
Table Items
item_id item_name
1 item_1
2 item_2
3 item_3
Table Purchases
item_id purchase_status
1 bought
2 bought
1 bought
Table Votes
item_id vote
1 1
2 1
3 -1
1 -1
1 -1
期望的輸出是:
做兩簡單連接來連接以下3代表由條目在Votes
表中的號碼相乘purchase_count
item_id item_name purchase_count vote_count
1 item_1 2 -1 //sum of -2 downvotes + 1 upvote
2 item_2 1 1
3 item_3 0 -1
我可能需要子查詢,但不能完全弄清楚查詢。或者,還有更好的方法?
你可能只想做2個查詢。 – Kevin
@凱文謝謝,你說這是因爲性能原因還是更容易代碼/數據庫維護? –
@timpeterson兩者。在一個查詢中這樣做需要使用2個「子查詢」。子查詢知道速度較慢,加上使用它們通常會讓你的sql代碼難以閱讀。國際海事組織,它會更容易做一個'選擇總和(票)從票'和'選擇計數(item_id)從採購'。 – tftd