สอบถาม เรื่อง รวมค่าที่ต้องการในตาราง

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถาม เรื่อง รวมค่าที่ต้องการในตาราง

สอบถาม เรื่อง รวมค่าที่ต้องการในตาราง

ช่องสีเหลือ= ต้องการรวม จาก HNสีฟ้า  จากวันที่ ช่องสีแดง
ช่องม่วง=ต้องการรวมค่า จากEMTสีเขียว  จากวันที่ ช่องสีแดง
จะมีช่องที่จะรวมอีก อันนี้ ยกตัวอย่างมา
---------------------------------------------------------
ขอแนะนำหน่อยครับบบ


Baby 07-06-2016 12:07:13

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

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


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


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

 ความคิดเห็นที่ 11
ลองดูแนวทาง และผลลัพธ์จากตัวอย่างนี้ ไปประยุกต์ดู


SELECT a.*,
(SELECT COUNT(b.date_day) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as num,
(SELECT SUM(b.date_val) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval,
(SELECT SUM(b.date_val2) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval2
FROM tbl_date a ORDER BY a.date_day ASC




date_id date_day Ascending 1 date_val date_val2 num sumval sumval2
1 2016-06-01 2 3 3 9 11
2 2016-06-01 3 1 3 9 11
3 2016-06-01 4 7 3 9 11
4 2016-06-03 4 1 4 17 8
5 2016-06-03 5 2 4 17 8
6 2016-06-03 2 2 4 17 8
7 2016-06-03 6 3 4 17 8

 


ninenik 09-06-2016
 ความคิดเห็นที่ 12
ผมต้องการเพิ่ม รับค่า เดือน กับ ปี //แต่อัน จุด where  ยังผิดอยู่ ขอแนะนำหน่อยครับ

SELECT a.*,(SELECT SUM(b.acute1) FROM product_er b WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as sumval
where a.month(datemeet)='2016-07-04' and a.year(datemeet)='2016-07-04'
FROM product_er a
ORDER BY a.datemeet ASC,wage ASC
 


baby 10-06-2016 14:21
 ความคิดเห็นที่ 13
SELECT a.*,  
(SELECT COUNT(b.date_day) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as num,  
(SELECT SUM(b.date_val) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval,  
(SELECT SUM(b.date_val2) FROM tbl_date b WHERE b.date_day=a.date_day GROUP BY b.date_day) as sumval2  
FROM tbl_date a 
WHERE a.date_day LIKE '2016-06%'
ORDER BY a.date_day ASC  


ดูเนื้อหานี้เป็นแนวทาง

การเก็บข้อมูลวันที่ ในฐานข้อมูล กับคำสั่ง sql ในการค้นหา  


ninenik 10-06-2016
 ความคิดเห็นที่ 14
ขอพระคุณอบ่างสูงครับ 


baby 10-06-2016 15:53
 ความคิดเห็นที่ 15
อันนี้ codeเดิมที่ทำอยู่
 
<?php
$nr=1;
$num=0;
$per=$_SESSION['Flname'];
$sql = "select * from product_er where month(datemeet)='$s_month' and year(datemeet)='$s_year' ";
$sql .= ($time!='') ? " and time='$time' " : '';
$sql .= ($wage!='') ? " and wage='$wage' " : '';
$sql .= " ORDER BY datemeet ASC,wage ASC  ";
 
$c_sql=mysql_db_query($dbname,$sql);
 
while($f_room=mysql_fetch_array($c_sql)) {
 
if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2';
 
?>
อันนี้ ผมแทรก codeใหม่เข้าไป แต่มันขึ้น error จุดนี้ครับ while($f_room=mysql_fetch_array($c_sql)) { //Warning: mysql_fetch_array(): 

  <?php
$nr=1;
$num=0;
$per=$_SESSION['Flname'];
 
 
$sql = "SELECT a.*,(SELECT SUM(b.acute1) FROM product_er b WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1";
$sql .="FROM product_er a";
$sql .="WHERE a.month(datemeet)='$s_month'";
$sql .="ORDER BY a.datemeet ASC,a.wage ASC";
 
$c_sql=mysql_db_query($dbname,$sql);
 
while($f_room=mysql_fetch_array($c_sql)) {
 
if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2';
?>


baby 13-06-2016 09:28
 ความคิดเห็นที่ 16
<?

$sql = "SELECT a.*,(SELECT SUM(b.acute1) FROM product_er b WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1 FROM product_er a WHERE a.datemeet LIKE '$s_month%'";
$sql .="FROM product_er a";
$sql .="ORDER BY a.datemeet ASC,a.wage ASC";
$c_sql=mysql_db_query($dbname,$sql);
while($f_room=mysql_fetch_array($c_sql) or die( $sql . "<br>".mysql_error())) {
if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2';
?>


<?}?>
ไม่แสดงข้อมูล ครับ แสดงแต่ SELECT บรรทัดแรก ครับ


baby 13-06-2016 11:54
 ความคิดเห็นที่ 17
กรณี error ก็น่าจะมาจากไม่มีข้อมูลตามคำส่ัง sql ส่วนในคำส่ัง sql ต้องตรวจสอบว่ามีการส่งค่ามาถูกต้องไหม
อีกอยางรูปแบบการใช้งานคำส่ัง mysql_db_query ไม่แนะนำให้ใช้ ควรเปลี่ยนมาใช้ mysqli แทน
ดูไว้เป็นแนวทาง 
มาใช้ mysqli แทน mysql แบบเดิม ใน php กันอย่างง่าย 
https://www.ninenik.com/content.php?arti_id=527 via @ninenik

คำสั่ง sql ควรเขียนแบบติดกันเลย ไม่ควรแยกแล้วต่อเป็น string เช่น

ใช้เป็น 
$sql="
/// เขียนคำส่ัง sql ในนี้ได้เลย ขึ้นบรรทัดใหม่จัดรูปแบบได้เลย
";

ไม่ควรใช้แบบ 
$sql="";
$sql .="";
เพราะจะทำให้อ่านคำสั่ง sql ยาก แต่ถ้าถนัดก็ไม่เป็นไร

ตัวอย่าง

$sql = "
SELECT a.*,
	(SELECT SUM(b.acute1) FROM product_er b 
	WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1 
FROM product_er a WHERE a.datemeet LIKE '".$s_month."%'
ORDER BY a.datemeet ASC,a.wage ASC
";
$c_sql=mysql_db_query($dbname,$sql); 
if($c_sql){
	while($f_room=mysql_fetch_array($c_sql)) {
		if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2'; 
		

	}
}


ตัวอย่างกรณีตรวจสอบเงื่อนไขการส่งค่ามาด้วย และการต่อ คำส่ัง sql อีกรุปแบบ

$more_sql="";
if(isset($s_month) && $s_month!=""){
	$more_sql=" AND a.datemeet LIKE '".$s_month."%' ";
}

$sql = "
SELECT a.*,
	(SELECT SUM(b.acute1) FROM product_er b 
	WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1 
FROM product_er a WHERE 1 $more_sql 
ORDER BY a.datemeet ASC,a.wage ASC
";
$c_sql=mysql_db_query($dbname,$sql); 
if($c_sql){
	while($f_room=mysql_fetch_array($c_sql)) {
		if($nr++%2==1) $trclass='BgSky'; else $trclass='BgSky2'; 
		

	}
}




ninenik 13-06-2016
 ความคิดเห็นที่ 18
  1. $sql = "  
  2. SELECT a.*,  
  3.     (SELECT SUM(b.acute1) FROM product_er b   
  4.     WHERE b.datemeet=a.datemeet GROUP BY b.datemeet) as acute1_1   
  5. FROM product_er a WHERE a.datemeet LIKE '".$s_month."%'  
  6. ORDER BY a.datemeet ASC,a.wage ASC  
  7. ";  
  8. $c_sql=mysql_db_query($dbname,$sql);   
  9. if($c_sql){  
  10.     while($f_room=mysql_fetch_array($c_sql)) {  
  11.         if($nr++%2==1) $trclass='BgSky'else $trclass='BgSky2';   
  12.           
  13.   //แทรกตารางตรงนี้น่ะ
  14.     }  
  15. }
  16. ข้อมูลก็ยังไม่ออกครับ ขอแนะนำหน่อยครับบ


baby 13-06-2016 15:01






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