PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum


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

สอบถามเรื่อง การหาผลรวม โดยมีเงื่อนไขในการหาผลรวมของข้อมูลแบบจัดกลุ่มซึ่งอยู่ในฟิลด์เดียวกัน
อันนี้เป็น 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 IP: 1.47.68.xxx วันที่: 13-04-2017 เวลา: 18:10:55

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

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


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


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 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 IP: 1.47.41.xxx วันที่: 13-04-2017
 ความคิดเห็นที่ 2
ทำได้แล้ว ขอบคุณมาก ๆ เลยค่ะ admin Ninenik
รบกวนอีกนิดค่ะ เพื่อเป็นความรู้เพิ่มเติมไปต่อยอด ถ้าหาค่า sum โดยที่เราระบุข้อที่เราต้องการเอง จากภาพด้านล่าง เราจะสามารถ IF ในการหา sum ได้หรือไม่ค่ะ 



โดย:  Tata.com IP: 1.47.68.xxx วันที่: 13-04-2017 เวลา: 19:41:57
 ความคิดเห็นที่ 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 IP: 1.47.41.xxx วันที่: 13-04-2017
 ความคิดเห็นที่ 4
  ขอบคุณสำหรับข้อมูลดี ๆ มาก ๆ เลยค่ะ admin Ninenik  


โดย:  Tata.com IP: 1.46.239.xxx วันที่: 14-04-2017 เวลา: 20:04:36