Làm thế nào để update data 1 cột từ cột của bảng khác?

Zalo_ScreenShot_2_12_2021_726739

bảng trên là LineItem, dưới là Orders.

Total = SUM(price của LineItem Group by order_id)
Làm thế nào để e update cột total của bảng Orders đc ạ?

nếu bạn update giá trị total là 100 (số cụ thể luôn) thì câu update sẽ như thế nào

2 Likes

À em làm đc rồi. Ban đầu e lại để where ở ngoài lên nó sai, mò 1 lúc thì cho whew trong và đúng rồi :smiley:

Update Orders
set total = (select SUM(price) from LineItem where Orders.order_id = LineItem.order_id Group by order_id )

2 Likes

đúng vậy
mình đang mong đợi một câu trả lời kiểu

Update Orders set total = 100

sau đó mình sẽ đặt vấn đề là thay số 100 đó bằng một câu query sum trong bảng lineitem với order id trong đó, và bạn đã tự làm được trước khi ra gợi ý

tuy nhiên câu trên không cần group by (dư thừa), vì đã có where rồi

một góp ý khác nữa là thường thì người ta không lưu trong db những field kiểu total như vậy, có thể là dùng view hoặc khi query thì lấy ra cột đó
vì khi lưu thì để đảm bảo tính nhất quán, bạn sẽ cần phải update mỗi khi có thay đổi total, nếu chỉ có 1 chỗ hoặc không có chỗ nào update thì còn đỡ, nếu có nhiều nguồn tác động thì khá mệt mỏi
(cũng có nhiều cách giải quyết như trigger, event listener, job … nhưng không lưu thì không cần giải quyết)

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?