Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,036

HOME > PHP > PHP Forum > สอบถาม PHP + SQL บวกจำนวนสินค้าที่ ID ซ้ำกัน แยกตามเดือน



 

สอบถาม PHP + SQL บวกจำนวนสินค้าที่ ID ซ้ำกัน แยกตามเดือน

 



Topic : 136936



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์




สอบถามการใช้ PHP + SQL บวกจำนวนสินค้าที่ซื้อแยกตามเดือนครับ ตอนนี้ผม SELECT แยกออกมาเป็นรายการได้แล้ว ติดปัญหาที่ id ซ้ำกันมันไม่รวมกันให้ อยากทราบว่าถ้าผมจะให้มัน SUM ออกมาตามเดือนต้องเขียนยังไงต่อครับ โดยให้เรียงเดือน 1 - 12
Code (PHP)
$stmt = $conn->query("SELECT DISTINCT SODT.GoodID, SODT.GoodName, SODT.GoodPrice2, SODT.GoodQty2 FROM SODT LEFT JOIN SOHD ON SOHD.SOID=SODT.SOID
LEFT JOIN EMGood ON EMGood.GoodID=SODT.GoodID 
LEFT JOIN EMCust ON EMCust.CustID=SOHD.CustID WHERE EmpID = '$empid' AND CustCode LIKE '%$txtKeyword%' 
AND YEAR(SOHD.DocuDate) = '$year'");
$stmt->execute();


sum

ขอบคุณครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2023-01-30 09:07:46 By : kko View : 415 Reply : 7
 

 

No. 1



โพสกระทู้ ( 9,583 )
บทความ ( 2 )



สถานะออฟไลน์


ให้ใช้ group by ไม่ใช้ distinct

Code (SQL)
select id
, sum( if( right(left(date, 7),2) = '01', amt, 0)) m1 
, sum( if( right(left(date, 7),2) = '02', amt, 0)) m2 
, sum( if( right(left(date, 7),2) = '03', amt, 0)) m3
...
, sum( if( right(left(date, 7),2) = '12', amt, 0)) m12 
 
from tablename 
where left(date,4)='2023'  
group by id









ประวัติการแก้ไข
2023-01-30 11:55:51
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-01-30 11:51:43 By : Chaidhanan
 


 
ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2023-01-30 11:51:43
รายละเอียดของการตอบ ::
... ผมใช้แบบนี้ถูกมั้ยครับพี่ ผมไม่เคยใช้ sum if เลยครับ.......
Code (PHP)
$sql = "SELECT SODT.GoodID, 
                                      sum(if(right(SOHD.DocuDate(date, 7),2) = '01', SODT.GoodQty2, 0)) m1,
                                      sum(if(right(SOHD.DocuDate(date, 7),2) = '02', SODT.GoodQty2, 0)) m2
                                      FROM SODT LEFT JOIN SOHD ON SOHD.SOID=SODT.SOID
                                      LEFT JOIN EMGood ON EMGood.GoodID=SODT.GoodID 
                                      LEFT JOIN EMCust ON EMCust.CustID=SOHD.CustIDWHERE 
                                      WHERE EmpID = '$empid' AND CustCode LIKE '%$txtKeyword%' AND YEAR(SOHD.DocuDate)='$year'
                                      GROUP BY SODT.GoodID";


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-01-30 12:47:45 By : kko
 

 

No. 3



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2023-01-30 11:51:43
รายละเอียดของการตอบ ::
... ตอนนี้ผมใช้แบบนี้ครับพี่ แต่ติด error ผมใช้ผิด syntax ใช่มั้ยครับ.......

Code (PHP)
$sql = "SELECT SODT.GoodID, SODT.GoodName, EMGood.GoodCode, SODT.GoodPrice2, 
SUM(IF(MONTH(SOHD.DocuDate) = '01' AND YEAR(SOHD.DocuDate) = '$year', SODT.GoodQty2, 0)) as m1
FROM SODT LEFT JOIN SOHD ON SOHD.SOID=SODT.SOID
LEFT JOIN EMGood ON EMGood.GoodID=SODT.GoodID 
LEFT JOIN EMCust ON EMCust.CustID=SOHD.CustID
WHERE EmpID = '$empid' AND CustCode LIKE '%$txtKeyword%' 
GROUP BY SODT.GoodID, SODT.GoodName, EMGood.GoodCode, SODT.GoodPrice2";


se
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-01-30 13:26:15 By : kko
 


 

No. 4



โพสกระทู้ ( 9,583 )
บทความ ( 2 )



สถานะออฟไลน์


5555555 sql server มันใช้ if ไม่ได้ ก็ไม่ tag มาด้วยว่าอะไร

ในกรณี dte มี type เป็น datetime
sum ( case when month(dte)=1 then amt else 0 end) as m1,
sum ( case when month(dte)=2 then amt else 0 end) as m2,


ในกรณี dte มี type เป็น varchar หรือ char รูปแบบ yyyy-mm-dd
sum ( case when right(left(dte,7),2)='01' then amt else 0 end) as m1,
sum ( case when right(left(dte,7),2)='02' then amt else 0 end) as m2,
ปรับโค๊ดไปตามสภาพแวดล้อม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-01-30 19:08:12 By : Chaidhanan
 


 

No. 5



โพสกระทู้ ( 9,583 )
บทความ ( 2 )



สถานะออฟไลน์


แนะนำ ให้เขียนเป็น function เอาไว้ ใน database เลย

Code (SQL)
CREATE FUNCTION SaleAmount( @year int)
RETURNS TABLE
AS 
RETURN
SELECT FIELD_ID
, SUM( CASE WHEN MONTH(FIELD_DATETIME)=1 then FIELD_AMT else 0 end) as m1
, SUM( CASE WHEN MONTH(FIELD_DATETIME)=2 then FIELD_AMT else 0 end) as m2
...
, SUM( CASE WHEN MONTH(FIELD_DATETIME)=12 then FIELD_AMT else 0 end) as m12
FROM table_name where year(FIELD_DATETIME)=@year
group by FIELD_ID

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-01-30 19:16:51 By : Chaidhanan
 


 

No. 6



โพสกระทู้ ( 9,583 )
บทความ ( 2 )



สถานะออฟไลน์


เวลาใช้

Code (SQL)
select s.*, b.xx, c.yy 
from SaleAmount( 2023 ) s
left join table_b b on b.ID = s.ID
left join table_c b on c.ID = s.ID




ประวัติการแก้ไข
2023-01-30 19:20:35
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-01-30 19:19:44 By : Chaidhanan
 


 

No. 7



โพสกระทู้ ( 0 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากๆครับพี่ เดี๋ยวผมลองปรับใช้ดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-01-30 21:16:45 By : kko
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถาม PHP + SQL บวกจำนวนสินค้าที่ ID ซ้ำกัน แยกตามเดือน
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่