สอบถามเรื่อง การหาผลรวม โดยมีเงื่อนไขในการหาผลรวมของข้อมูลแบบจัดกลุ่มซึ่งอยู่ในฟิลด์เดียวกัน

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามเรื่อง การหาผลรวม โดยมีเงื่อนไขในการหาผลรวมของข้อมูลแบบจัดกลุ่มซึ่งอยู่ในฟิลด์เดียวกัน

สอบถามเรื่อง การหาผลรวม โดยมีเงื่อนไขในการหาผลรวมของข้อมูลแบบจัดกลุ่มซึ่งอยู่ในฟิลด์เดียวกัน
อันนี้เป็น code ค่ะ ผลที่มันแสดงออกมานั้น มันหาผลรวมคะแนน ข้อที่ 1-5 เท่านั้น แต่อยากให้มัน หาผลรวม ข้อที่ 6-10 ด้วย 
จากข้อมูลที่อยู่ในฟิลด์เดียวกัน ซึ่งมีทั้งหมด 10 ข้อ จะต้องปรับแก้ไข เพิ่มเติม คิวรี่ ตรงไหนได้บ้างค่ะ รบกวนช่วยแนะนำด้วยค่ะ มือใหม่ 
<?
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>


Tata.com 1.47.68.xxx 13-04-2017 18:10:55

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ถ้าฟิลด์ id_question เก็บเป็น int ลองใช้แนวทางคำสั่ง แบบนี้ดู

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


ninenik 1.47.41.xxx 13-04-2017
 ความคิดเห็นที่ 2
ทำได้แล้ว ขอบคุณมาก ๆ เลยค่ะ admin Ninenik
รบกวนอีกนิดค่ะ เพื่อเป็นความรู้เพิ่มเติมไปต่อยอด ถ้าหาค่า sum โดยที่เราระบุข้อที่เราต้องการเอง จากภาพด้านล่าง เราจะสามารถ IF ในการหา sum ได้หรือไม่ค่ะ 



tata.com 1.47.68.xxx 13-04-2017 19:41
 ความคิดเห็นที่ 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 ประมาณนี้

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,....' เป็นค่าตามต้องการ


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


tata.com 1.46.239.xxx 14-04-2017 20:04
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ