สอบถามเรื่อง การหาผลรวม โดยมีเงื่อนไขในการหาผลรวมของข้อมูลแบบจัดกลุ่มซึ่งอยู่ในฟิลด์เดียวกัน
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามเรื่อง การหาผลรวม โดยมีเงื่อนไขในการหาผลรวมของข้อมูลแบบจัดกลุ่มซึ่งอยู่ในฟิลด์เดียวกัน
สอบถามเรื่อง การหาผลรวม โดยมีเงื่อนไขในการหาผลรวมของข้อมูลแบบจัดกลุ่มซึ่งอยู่ในฟิลด์เดียวกัน
1 | อันนี้เป็น code ค่ะ ผลที่มันแสดงออกมานั้น มันหาผลรวมคะแนน ข้อที่ 1-5 เท่านั้น <span style= "color:#ff0000;" ><strong>แต่อยากให้มัน</strong></span> <span style= "color:#0000cd;" >หาผลรวม ข้อที่ 6-10 ด้วย</span> |
1 | <span style= "font-family: Arial, Verdana, sans-serif;" >จากข้อมูลที่อยู่ในฟิลด์เดียวกัน ซึ่งมีทั้งหมด 10 ข้อ <span style= "color:#000080;" >จะต้องปรับแก้ไข เพิ่มเติม คิวรี่ ตรงไหนได้บ้างค่</span>ะ รบกวนช่วยแนะนำด้วยค่ะ<span style= "color:#00ff00;" > </span><span style= "color:#ff8c00;" >มือใหม่ </span></span> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <? include ( "config.php" ); $strSQL = "SELECT id_student ,sum(score) as sum1_5 FROM tb_answer WHERE id_question BETWEEN '1' and '5' GROUP BY id_student"; $objQuery = mysql_query( $strSQL ) or die ( "Error Query [" . $strSQL . "]" ); while ( $row = mysql_fetch_array( $objQuery )){ ?> <table> <tr> <td> รหัสนักเรียน <?= $row [ 'id_student' ]?> คะแนนรวม ข้อที่ 1-5 = <?= $row [ 'sum1_5' ]; ?> คะแนน </td> </tr> <?}?> </table> |

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
ถ้าฟิลด์ id_question เก็บเป็น int ลองใช้แนวทางคำสั่ง แบบนี้ดู
1 2 3 4 5 6 | SELECT stu_id, SUM (IF(que_id>=1 AND que_id<=5,score_val,0)) as score1_5, SUM (IF(que_id>=6 AND que_id<=10,score_val,0)) as score6_10 FROM tbl_score GROUP BY stu_id |

ความคิดเห็นที่
2

รบกวนอีกนิดค่ะ เพื่อเป็นความรู้เพิ่มเติมไปต่อยอด ถ้าหาค่า sum โดยที่เราระบุข้อที่เราต้องการเอง จากภาพด้านล่าง เราจะสามารถ IF ในการหา sum ได้หรือไม่ค่ะ

ความคิดเห็นที่
3
ใช้ฟังก์ชั่น FIND_IN_SET() เข้าไปแทนเงื่อนไข que_id>=1 AND que_id<=5 แทนก็ได้
หรือจะกำหนดแบบทีละตัวก็ได้ เช่น que_id=1 OR que_id=2 OR que_id=3
อย่างถ้าใช้ FIND_IN_SET เวลาใช้ก็กำหนดตายตัวเข้าไป แบ่งด้วย comma (,) ถ้ามีอันเดียว
ก็ไม่ต้องมี comma ประมาณนี้
เปลี่ยน '1,2,....' เป็นค่าตามต้องการ
หรือจะกำหนดแบบทีละตัวก็ได้ เช่น que_id=1 OR que_id=2 OR que_id=3
อย่างถ้าใช้ FIND_IN_SET เวลาใช้ก็กำหนดตายตัวเข้าไป แบ่งด้วย comma (,) ถ้ามีอันเดียว
ก็ไม่ต้องมี comma ประมาณนี้
1 2 3 4 5 6 | SELECT stu_id, SUM (IF(FIND_IN_SET(que_id, '1,2,3,4,5' ),score_val,0)) as score1_5, SUM (IF(FIND_IN_SET(que_id, '6,7,8,9,10' ),score_val,0)) as score6_10 FROM tbl_score GROUP BY stu_id |
เปลี่ยน '1,2,....' เป็นค่าตามต้องการ

ความคิดเห็นที่
4
ขอบคุณสำหรับข้อมูลดี ๆ มาก ๆ เลยค่ะ admin Ninenik


ขอบคุณทุกการสนับสนุน
![]()