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,037

HOME > PHP > PHP Forum > รบกวนเรื่องการ Query ข้อมูลออกมาช้า จะหาวิธีตรวจสอบแบบไหนกับการ OrderBy GroupBy ของข้อมูลครับ



 

รบกวนเรื่องการ Query ข้อมูลออกมาช้า จะหาวิธีตรวจสอบแบบไหนกับการ OrderBy GroupBy ของข้อมูลครับ

 



Topic : 119431



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



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




คืออยากสอบถามเรื่องการ query อะครับ คือข้อมูลทั้งหมด ผมมี 2700 record ใช้เวลา query นานมาก ประมาน 6-7 วิเลย ผมจะตรวจสอบแก้ไขยังไงดีครับ

หน้า php view_report_by_job2



สอบถามเพิ่มเติมเรื่องที่2 การ group by order byครับ
ถ้าใน DB ผมมี table ชื่อ job มีฟิลแรก เป็น job_no ฟิลที่2 เป็น job_ref
เมื่อมีการ ADD ข้อมูล เข้ามา
job no job_ref
1
2 1
3
4
5
6 1

ตอน query ผมอยากให้มันเรียงประมาณว่า
1(Master)
2
6
3
4
5
ประมานนี้อะครับ อยากให้ตัวที่เป็น master อยู่บนสุดของตัวที่มี job_ref
ต้องเขียนประมานไหนดีครับ



Tag : PHP, MySQL, HTML/CSS, JavaScript, Ajax, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-10-16 15:35:22 By : wahahaboy View : 1894 Reply : 10
 

 

No. 1



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



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

คำถาม 1: อ่านโค๊ดแล้ว ปวดหัว เอา statement ที่ได้มาโชว์ดีกว่าครับ

คำถาม 2: order by isMaster<>'master', job_ref desc, job_no
isMaster<>'master' ค่าที่ได้จะเป็น 0 และ 1 [ 0 ถ้าเป็นมาสเตอร์ 1 ไม่ใช่มาสเตอร์ ]
เรียงลำดับจากน้อยไปหามาก 0 มาสเตอร์จะมาก่อน
job_ref desc จะได้ค่าลำดับตัวเลขจากมากไปหาน้อย
job_no จะได้ค่าลำดับตัวเลข record จากน้อยไปหามาก
เรียงลำดับ ความสำคัญ มาสเตอร์ 0ไป1 , job_ref desc 1ไป0, job_no 0-1








ประวัติการแก้ไข
2015-10-17 05:17:07
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-16 17:14:39 By : NewbiePHP
 


 

No. 2



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



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


คำถามข้อ ที่ 2
SELECT job.job_no,job.job_ref,job.branch_name,job.branch_code FROM job where job.customer_name='BAY' and job.project_code='null' order by isMaster<>'master', job_ref desc, job_no
MySql ErrorUnknown column 'isMaster' in 'order clause'


ผมใส่แล้วมัน error อะคือใน DB ผมไม่ได้เก็บอะไรไว้สำหรับตัวที่่เป็น master มันจะดูจาก job_ref อะครับ


ส่วนข้อที่1
Code (PHP)
			if($_POST['Customer']!=""){
					$c_name=$_POST['Customer']; //file name output
					$Customer="where job.customer_name='".$_POST['Customer']."' ";
						
					if($_POST['project_code']!=""){
							//echo	$p_code=$_POST['project_code']; //file name output
							$project_code="and job.project_code='".$_POST['project_code']."' ";	
					}
					else{
							$p_code="All";
							$project_code="";
					}
			}else{
					$c_name="All";
					$Customer="";
			}
			if(@$_POST['job_no']!=""){
				if($Customer=="")
					$job_no="where job.job_no LIKE '%".trim($_POST['job_no'])."%' ";
				else
					$job_no="and job.job_no LIKE '%".trim($_POST['job_no'])."%' ";
			}else{
				$job_no="";
			}
			
			if(isset($_POST['job_status'])){
				$sub_bill="LEFT JOIN sub_bill on sub_bill.job_no=job.job_no ";
				if(@$_POST['job_status']!=""){
					if($Customer=="" && $job_no=="")
						$job_status="where sub_bill.job_status='".$_POST['job_status']."' ";
					else
						$job_status="and sub_bill.job_status='".$_POST['job_status']."' ";
				}else{
					$job_status="";
				}
			}
			
			if(isset($_POST['billing_status'])){
				$payment="LEFT JOIN payment on payment.job_no=job.job_no ";
				if(@$_POST['billing_status']!=""){
					if($Customer=="" && $job_no=="" && $job_status=="")
						$billing_status="where payment.billing_status='".$_POST['billing_status']."' ";
					else
						$billing_status="and payment.billing_status='".$_POST['billing_status']."' ";
				}else{
					$billing_status="";
				}
			}
			
			if(@$_POST['date_start']!="" && $_POST['date_end']!=""){
				if($Customer=="" && $job_no=="" && $job_status=="" && $billing_status=="")
					$date_se="where job.date_create between '".$_POST['date_start']."' and '".$_POST['date_end']."' ";
				else
					$date_se="and job.date_create between '".$_POST['date_start']."' and '".$_POST['date_end']."' ";
			}else{
				$date_se="";
			}
		
	$query_pag_data= "SELECT job.job_no,job.job_ref, job.branch_name ,sub_bill.payment_status, payment.billing_status,payment.job_item FROM job ";
	$query_pag_data.= "$sub_bill $payment "; // LEFT JOIN Table
	$query_pag_data.= "$Customer $project_code $job_no $job_status $billing_status $date_se "; // Condition
	//$query_pag_data.= "GROUP BY job.job_ref,job.job_no DESC ";
	$query_pag_data.= "GROUP BY job.job_ref, job.job_no DESC ";
	$query_pag_data.= "LIMIT $start, $per_page ";
	$result_pag_data = mysql_query($query_pag_data) or die('MySql Error' . mysql_error());
	$num_rows=mysql_num_rows($result_pag_data);
	$height=$num_rows*30;
	$start+=1;


จริงๆ statement มีแค่นี้ผมว่ามันก้ไม่น่าจะช้าครับแต่ยังไล่หาจุดที่ช้าไม่เจอ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-18 17:08:04 By : wahahaboy
 

 

No. 3



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



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

echo $query_pag_data ออกมาดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-18 17:12:28 By : NewbiePHP
 


 

No. 4



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



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


ลองแล้วครับมันไม่รุ้จัก
MySql ErrorUnknown column 'isMaster' in 'order clause'
คำสั่งชุดนีอะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-19 14:05:07 By : wahahaboy
 


 

No. 5



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



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

มันไม่รู้จักเพราะผมยกเป็นตัวอย่าง condition ไว้เฉยๆครับ ก็แก้ให้เป็นตัวแปรที่เกี่ยวข้อเอาเองครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-19 14:48:44 By : NewbiePHP
 


 

No. 6



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



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


ส่วนปัญหาที่ query นานผมเจอจุดแล้วครับเกิดจาก มัน left join กัน 2 table อะครับพอจะมีคำสั่งอื่นไหมครับ เพราะผมรันใน sql ก้ช้าเหมือนกัน
Code (PHP)
	$query_pag_data= "SELECT job.job_no,job.job_ref, job.branch_name ,sub_bill.payment_status, payment.billing_status,payment.job_item FROM job ";
	$query_pag_data.= "$sub_bill $payment "; // LEFT JOIN Table
	$query_pag_data.= "$Customer $project_code $job_no $job_status $billing_status $date_se "; // Condition


Code (SQL)
SELECT job.job_no,job.job_ref, job.branch_name ,sub_bill.payment_status, payment.billing_status,payment.job_item 
FROM job 
LEFT JOIN sub_bill on sub_bill.job_no=job.job_no 
LEFT JOIN payment on payment.job_no=job.job_no 
GROUP BY job.job_ref, job.job_no DESC LIMIT 0, 25

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-19 14:49:33 By : wahahaboy
 


 

No. 7



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



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

ที่ตาราง sub_bill และ payment ได้กำหนด index ให้กับ job_no ไว้หรือเปล่าครับ
ถ้าทำไว้แล้ว
ก็ต้องถาม ต่อว่า กรณีที่ไม่ข้อมูล ใน sub_bill และ payment ให้แสดงค่าว่าง ใช่ไหมครับ
ถ้าใช่ก็หมดไอเดียครับ คงต้องรอท่านอื่นมาช่วย

แต่ถ้าไม่คือยังไงก็มีข้อมูลใน sub_bill และ payment ที่ตรงกับ Job เสมอ
ให้ใช้ inner join แทนครับ

Code (SQL)
SELECT j.job_no,j.job_ref, j.branch_name, b.payment_status, p.billing_status, p.job_item 
FROM job j, sub_bill b, payment p
WHERE b.job_no=j.job_no and p.job_no=j.job_no 
GROUP BY j.job_ref, j.job_no
ORDER BY j.job_ref, j.job_no DESC 
LIMIT 0, 25

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-19 15:21:15 By : NewbiePHP
 


 

No. 8



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



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


กำหนด index ให้กับ job_no ทั้งสองตาราางแลว้ครับ
ตาราง sub_bill จะมีเลข job_no ตรงกับตาราง job เสมอ
แต่ตาราง payment จะไม่ตรงกันกับ job ครับ กรณีที่ยังไม่มีเลข job_no ใน payment ก้ไม่ต้องขึ้น ข้อมูลของ payment_status แต่ยังคงต้องขึ้นเลข job_no อยู่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-19 16:10:25 By : wahahaboy
 


 

No. 9



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



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

ทุกเรคคอร์ดของ job จะต้องมี job_no ใน sub_bill อย่างน้อย 1 record เสมอ

Code (SQL)
SELECT j.job_no,j.job_ref, j.branch_name, b.payment_status, p.billing_status, p.job_item 
FROM job j
INNER JOIN sub_bill b ON b.job_no=j.job_no
LEFT JOIN payment_status p on p.job_no=j.job_no 
GROUP BY t.job_ref, t.job_no
ORDER BY t.job_ref, t.job_no DESC 



ประวัติการแก้ไข
2015-10-19 17:08:45
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-19 16:57:52 By : NewbiePHP
 


 

No. 10

Guest


กำหนด index ให้ตารางครับ
ตาราง sub_bill ฟิลด์ job_no
ตาราง payment ฟิลด์ job_no
ตาราง job ฟิลด์ job_no และ ฟิลด์ job_ref
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-10-19 18:30:00 By : NAT
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนเรื่องการ Query ข้อมูลออกมาช้า จะหาวิธีตรวจสอบแบบไหนกับการ OrderBy GroupBy ของข้อมูลครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 04
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 อัตราราคา คลิกที่นี่