 |
|
ช่วยคำสั่ง sql หน่อยค่ะ อยากให้โชว์โดยถ้ารวมผล sum ภายในชื่อไอดีเดียว ไม่ใช่แสดงมา4ครั้ง |
|
 |
|
|
 |
 |
|
Code (SQL)
select d.sale_id, s.mem_id,m.mem_name ,m.mem_lastname,sum(d.cost * d.sale_num)as total,m.share_amount
from sale_detial d, sale s,member m where s.sale_id= d.sale_id and m.Mem_ID = s.mem_id
group by d.sale_id ,s.mem_id,m.mem_name,m.mem_lastname,m.share_amount
?v=1001" border="0">
Tag : .NET, Ms SQL Server 2008, VS 2010 (.NET 4.x), Windows
|
|
 |
 |
 |
 |
Date :
2013-10-01 21:48:13 |
By :
Belletempo |
View :
827 |
Reply :
6 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
https://www.thaicreate.com/upload/stock/20131001214740.jpg
|
 |
 |
 |
 |
Date :
2013-10-01 21:50:22 |
By :
Belletempo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองทำความเข้าใจ กับการ Sum แบบง่าย ๆ ดูก่อนนะครับ แล้วการเชื่อมตาราง แนะนำให้ใช้ Left Join นะครับ
ผมก็ไม่เคยใส่ Table หลัง From ต่อ ๆ กันครับ ส่วนใหญ่ถ้าจะเชื่อมตารางให้ใช้ Left Join
ตัวอย่างการ Sum แบบง่าย ๆ ดูก่อน เช่น
Code (SQL)
SELECT d.sale_id, sum(d.cost) as total FROM sale_detail d GROUP BY d.sale_id
พอเริ่มเข้าใจหลักแล้วให้ LEFT JOIN เข้าไป
Code (SQL)
SELECT d.sale_id, s.mem_id , m.mem_name , m.mem_lastname ,sum(d.cost) as total FROM sale_detail d
LEFT JOIN sale s ON s.sale_id = d.sale_id
LEFT JOIN member m ON m.Mem_ID = s.mem_id
GROUP BY d.sale_id , s.mem_id , m.mem_name , m.mem_lastname
ที่่เหลือไปลองประยุกต์และทำความเข้าใจดูครับ 
|
 |
 |
 |
 |
Date :
2013-10-01 22:39:16 |
By :
01000010 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลอง select sum group by อีกรอบ ครับ  
Code (SQL)
select
DT.sale_id,DT.mem_id,DT.mem_name,DT.mem_lastname,sum(DT.total) AS Total, DT.share_amount
from
(
select d.sale_id, s.mem_id,m.mem_name ,m.mem_lastname,sum(d.cost * d.sale_num)as total,m.share_amount
from sale_detial d, sale s,member m where s.sale_id= d.sale_id and m.Mem_ID = s.mem_id
group by d.sale_id ,s.mem_id,m.mem_name,m.mem_lastname,m.share_amount) AS DT
)
group by DT.sale_id,DT.mem_id,DT.mem_name,DT.mem_lastname,DT.share_amount
|
 |
 |
 |
 |
Date :
2013-10-02 10:09:53 |
By :
tee |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าจะให้ออกยอดเดียว จะต้อง Group ในสิ่งที่ซ้ำกัน เท่านั้นครับ
จากรูป

มี sale_id ที่แตกต่างกัน เวลา group มันก็เลยแยกกันอยู่ครับ
ลองเอา sale_id ออกดูครับ
-----------------------------------------------------
วิธี join แบบที่คุณ Belletempo ใช้
น่าจะเป็น cross join น่ะครับ
ผมก็ไม่ค่อยเห็นใครใช้ นอกจากพวกรุ่นพี่ (มากๆ) 555555+
|
 |
 |
 |
 |
Date :
2013-10-02 10:19:56 |
By :
fonfire |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|