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 ข้อมูลจากตาราง 2 ตาราง ครับ



 

สอบถามเรื่องการกำหนดเงื่อนไข การ query ข้อมูลจากตาราง 2 ตาราง ครับ

 



Topic : 082265



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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




สวัสดีครับ

ผมมีเรื่องสอบถามครับ
คือ
ผมมี ตาราง อยู่ 2 ตาราง นะครับ

โดยตารางแรก เก็บข้อมูลนักเรียน

student
---------------------
Field
---------------------
std_id
std_stdno
std_name


register
---------------------
Field
---------------------
reg_id
reg_date
reg_std_id


ปัญหาคือ ผมอยากจะ query ดึงเอาข้อมูลเฉพาะนักเรียนที่ไม่ได้ทำการลงทะเบียนมาแสดงครับ

สำหรับการแสดงข้อมูลนักเรียนที่ลงทะเบียนนั้น ผมสามารถ คิวรี ได้ตามปกติครับ โดยใช้ inner join (ไม่รู้ใช้ถูกไหมครับ)

แต่สำหรับ การดึงข้อมูล นักเรียนที่ไม่ได้ลงทะเบียนมาแสดง จะต้องใช้ คำสั่ง SQL อย่างไร
ใช้ Right Join ได้หรือไม่ครับ
และจะกำหนด SQL query อย่างไรครับ

รบกวน ให้แนวทางผมหน่อยครับ

ขอบพระคุณครับ



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-08-13 14:19:24 By : yomaster View : 2919 Reply : 21
 

 

No. 1



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



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


ขอแก้ไข(เริ่ม งง กะตัวเอง) ถ้าใช้ RIGHT JOIN หรือ LEFT JOIN จะใช้ในกรณีที่เลือกข้อมูลสองหรือหลายตารางที่มีข้อมูลสัมพันธ์กัน ส่วนกรณีของคุณนี้น่าจะใช้ INNER JOIN นะครับ
Code (PHP)
$sql = "SELECT student.* , register.* FROM student ,register WRERE student.std_id != register.reg_std_id ORDER BY student.std_id ASC";

ลองดูครับ








ประวัติการแก้ไข
2012-08-13 15:05:44
2012-08-13 15:16:03
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 15:04:28 By : arm8957
 


 

No. 2



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


สวัสดีครับ

ขอบคุณมากๆ นะครับ

คือได้ลองทำแบบที่ว่าไปก่อนหน้านี้แล้วครับ

แต่มัน Query ข้อมูลนานมาก แล้วก็ แจ้ง error maximum ไปเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 15:26:39 By : yomaster
 

 

No. 3



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



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


ตอบความคิดเห็นที่ : 2 เขียนโดย : yomaster เมื่อวันที่ 2012-08-13 15:26:39
รายละเอียดของการตอบ ::
แจ้ง error maximum ไปเลย

ลองกำหนด LIMIT ดูครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 15:40:54 By : arm8957
 


 

No. 4



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


มีการกำหนด LIMIT ด้วย การแบ่งหน้าแล้ว จะใช้แทนกันได้หรือเปล่าครับ

ข้อมูลมีไม่เยอะนะครับ

เพราะเป็นแค่ตัวอย่าง มีไม่ถึง 10 records เองครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 15:46:55 By : yomaster
 


 

No. 5



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



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


ข้อมูลไม่เยอะก็ใช้ INNER JOIN ก็ได้ครับ
Code (PHP)
$sql = "SELECT student.* , register.* FROM student ,register WRERE student.std_id != register.reg_std_id ORDER BY student.std_id ASC LIMIT 10";

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 15:50:57 By : arm8957
 


 

No. 6



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


ไม่ได้อยู่ดีครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 15:58:41 By : yomaster
 


 

No. 7



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



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


มี ERROR ไม๊ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 16:08:53 By : arm8957
 


 

No. 8



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


เหมือนเดิมครับ ถ้าไม่ขึ้น error maximum ก็จะค้างไปเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 16:12:34 By : yomaster
 


 

No. 9



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



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


ขอลองก่อน สักครู่ครับ ขอสร้างฐานข้อมูลแปป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 16:15:53 By : arm8957
 


 

No. 10



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


ขอบคุณครับผม

ตอนนี้ก็ลองทั้ง WHERE... IS NULL แสดง ไม่พบข้อมูล

ลอง WHERE NOT EXISTS แสดง ไม่พบข้อมูล
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 16:25:25 By : yomaster
 


 

No. 11



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



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


ผมขอฐานข้อมูลคุณได้ป่ะ? สร้างเองไม่รู้ว่าตรงกันรึป่าว [email protected]
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 16:41:28 By : arm8957
 


 

No. 12



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


สักครู่นะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 16:45:03 By : yomaster
 


 

No. 13



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


ผมส่งไฟล์ให้แล้วนะครับ

ตามอีเมล์ ด้านบน ครับ

รบกวนด้วยนะครับ

ขอบพระคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 16:54:36 By : yomaster
 


 

No. 14



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



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


อ้างอิงจากฐานข้อมูลที่คุณส่งให้นะครับ
Code (PHP)
$sql = "SELECT t_student.std_idcard , t_club_selected.* FROM t_student ,t_club_selected WHERE t_student.std_id != t_club_selected.cs_std_id  ORDER BY t_student.std_id ASC LIMIT 5";

จะได้ผลลัพธิ์ ดังภาพ
result
ลองดัดแปลงดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 17:11:07 By : arm8957
 


 

No. 15



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


สวัสดีครับ

t_student.std_id จะมีความสัมพันธ์ กับ t_club_selected.cs_std_id
(t_student.std_id=t_club_selected.cs_std_id)

ดังนั้น จะต้องเป็น นักเรียนรหัส 20100 (std_id=1) ไม่ได้ทำการลงทะเบียนในรายวิชาใดๆ เลยนะครับ

ส่วน นักเรียนรหัส 20101 (std_id=2) ทำการลงทะเบียนรายวิชา (cs_club_id=10) นะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 17:20:34 By : yomaster
 


 

No. 16



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



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


งั้นใช้ if(){....} else {...} เช็คละกันครับ
Code (PHP)
$sql = mysql_query("SELECT t_student.std_idcard , t_club_selected.* FROM t_student ,t_club_selected WHERE t_student.std_id != t_club_selected.cs_std_id  ORDER BY t_student.std_id ASC LIMIT 5 ");
$num = mysql_num_rows($sql);
if($num>0){
  echo ' นักเรียนรหัสต่อไปนี้ไม่ลงทะเบียนเรียนวิชาอะไรเลย : ' ;
  while($result = mysql_fetch_array($sql)){    echo $result['std_idcard'].', ' ; }
}
 echo "<br /><br />";
$sql2 = mysql_query("SELECT t_student.std_idcard , t_club_selected.* FROM t_student ,t_club_selected WHERE t_student.std_id = t_club_selected.cs_std_id  ORDER BY t_student.std_idcard ASC LIMIT 5");
$num2 = mysql_num_rows($sql2);
if($num2>0){
  while($result2 = mysql_fetch_array($sql2)){    
       echo  ' นักเรียนรหัส : ' .$result2['std_idcard'].' ลงทะเบียนรายวิชา :'.$result2['cs_club_id'] ; 
  }
}


แบบนี้น่าจะได้ครับ (โค๊ดแก้ไขล่าสุดนะครับ)


ประวัติการแก้ไข
2012-08-13 17:45:31
2012-08-13 17:49:07
2012-08-13 17:51:53
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 17:38:31 By : arm8957
 


 

No. 17



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


สวัสดีครับ

ผมลอง run ใน phpMyAdmin ก็ได้ปกติคครับผม
แต่ว่า ผลที่ออกมา มันดึงข้อมูลจากตาราง student มาแสดง ร่วมกับตาราง club ดังนี้นะครับ

ข้อมูลนักเรียนที่ ไม่ได้ ลงทะเบียน จาก ตาราง student+ข้อมูล id นักเรียนที่ลงทะเบียนในตาราง club

ก็เลย งง ครับ

และพอผมเอาไปเขียนโค้ดร่วมกับ PHP มันก็จะแสดงข้อมูลดังนี้ครับ
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 30' at line 4

ผมใช้ query ดังนี้

$sql = "SELECT t_student.std_id, t_club_selected.cs_id, t_club_selected.cs_std_id
FROM t_student, t_club_selected
WHERE t_student.std_id != t_club_selected.cs_std_id
ORDER BY t_student.std_id ASC LIMIT 0,5";

ยังไงก็ขอบบคุณมากๆ นะครับ ที่ช่วยเหลือ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 17:46:18 By : yomaster
 


 

No. 18



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


ขอบคุณมากๆ นะครับ สำหรับการช่วยเหลือ

เดี๋ยวผม ลอง หาวิธีดูอีกทีนะครับ

วิธีที่บอกมา ผมลองแล้วนะครับ

ยังไม่ได้ ครับผม ;)

ได้ไม่ได้ ยังไง จะมาแจ้งผลอีกทีนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 17:55:00 By : yomaster
 


 

No. 19



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



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


ลองเอาโค๊ดนี้ไปดูครับ เผื่อจะช่วยอะไรได้ครับ ผมก็พยายามละ
Code (PHP)
<?php
	ob_start();
	session_start();
	ini_set('default_charset','utf-8');
	header('Content-type: text/html; charset=utf-8');										# SET Header Encoding	

	$serv_name = "localhost";
	$dbas_name = "test_join";
	$user_name = "root";
	$user_pass = "root";

	
	$conn = @mysql_connect($serv_name, $user_name, $user_pass) or die
					("ERROR : ไม่สามารถติดต่อเซิฟเวอร์ ได้ค่ะ!!!<br /> Mysql report : ".mysql_error());		# Create connection 
	@mysql_select_db($dbas_name, $conn) or die
					("ERROR: ไม่สามารถเลือกฐานข้อมูล ได้ค่ะ!!!<br /> Mysql report : ".mysql_error());		# Select database
	@mysql_query("SET NAMES UTF8") or die
					("ERROR : ไม่สามารถเซ็ตอ็นโค๊ดดิ้ง ได้ค่ะ!!!<br /> Mysql report : ".mysql_error());		# SET database encoding

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?PHP
$sql = mysql_query("SELECT t_student.std_idcard , t_club_selected.* FROM t_student ,t_club_selected WHERE t_student.std_id != t_club_selected.cs_std_id  ORDER BY t_student.std_id ASC LIMIT 5 ");
$num = mysql_num_rows($sql);
if($num>0){
  echo ' นักเรียนรหัสต่อไปนี้ไม่ลงทะเบียนเรียนวิชาอะไรเลย : ' ;
  while($result = mysql_fetch_array($sql)){    echo $result['std_idcard'].', ' ; }
}
 echo "<br /><br />";
$sql2 = mysql_query("SELECT t_student.std_idcard , t_club_selected.* FROM t_student ,t_club_selected WHERE t_student.std_id = t_club_selected.cs_std_id  ORDER BY t_student.std_idcard ASC LIMIT 5");
$num2 = mysql_num_rows($sql2);
if($num2>0){
  while($result2 = mysql_fetch_array($sql2)){    
       echo  ' นักเรียนรหัส : ' .$result2['std_idcard'].' ลงทะเบียนรายวิชา :'.$result2['cs_club_id'] ; 
  }
}

?>
</body>
</html>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 17:55:22 By : arm8957
 


 

No. 20



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


ลองแล้วครับ

ใน ข้อมูลที่ทดสอบ ได้นะครับ

แต่พอเอามาใช้จริงๆ กับข้อมูล 3 พันกว่า มันรวม ข้อมูลทั้งหมดเลยครับ

เช็คจาก ข้อมูลนักเรียน ที่ลงทะเบียน และ จำนวน นักเรียนทั้งหมดครับ


เดี๋ยวยังไงจะลองดูอีกทีนะครับ

ขอบคุณมากๆ นะครับ สำหรับการช่วยเหลือนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 18:25:43 By : yomaster
 


 

No. 21



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

สมาชิกที่ใส่เสื้อไทยครีเอท

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


ตัวอย่าง

สังเกตุ จากรูปนะครับ

มันจะแสดงผล รวมทั้งหมดเลย ใน หัวข้อ ของ นักเรียนที่ไม่ได้ลงทะเบียน

ทั้งๆ ที่ นักเรียนที่ลงทะเบียน มี 2 รหัส อยู่ด้านล่างครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-08-13 18:33:58 By : yomaster
 

   

ค้นหาข้อมูล


   
 

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