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 จาก 3 ตารางออกมาแสดงผลข้อมูลอ่ะครับ



 

ขอสอบถามเรื่องการ query จาก 3 ตารางออกมาแสดงผลข้อมูลอ่ะครับ

 



Topic : 111826



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



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




ผมมี 3 ตารางในฐานข้อมูลนะครับ คือ member,product,order_product

ผมเก็บค่าจากการเข้าสู่ระบบด้วย username นะครับ

พอสมาชิกทำรายการจองสินค้า จะไปบันทึกลงในตาราง order_product จะเก็บ รหัสสมาชิกและรหัสสินค้า

พอจะ query การจองของสมาชิกออกมาดูผมก็ต้องค้นหา id สมาชิกในตาราง member ก่อน แล้วค่อยเอา id สมาชิกไปตรวจสอบในตาราง

order_product แล้วค่อยเอารหัสสินค้าในตาราง order_product ไปดึงจากจากตางราง product มาแสดงผลใช่หรือเปล่าครับ

คำถามอาจ งงๆ นะครับ

Code (PHP)
$sql="Select * from member Where username ='$_SESSION[user]'";
$rstTemp=mysql_query($sql);
$rstTempre=mysql_fetch_array($rstTemp);
	
$sql2="Select * from order_product Where id_user ='$rstTempre[id]'";
$rstTemp2=mysql_query($sql2);
$rstTempre2=mysql_fetch_array($rstTemp2);

$sql3="Select * from product Where Id_product ='$rstTempre2[id_product]'";
$rstTemp3=mysql_query($sql3);
$rstTempre3=mysql_fetch_array($rstTemp3);


ประมาณนี้อ่ะครับ แต่มัน query ออกมาเจอแค่สินค้าตัวเดียวทั้งที่มี 3 ตัว



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-10-09 14:26:33 By : lungzee View : 1117 Reply : 7
 

 

No. 1



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



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


ลองศึกษา เรื่อง การ join table ครับ
Code (SQL)
Select * 
from order_product a
inner join member b on b.id_user  = a.id_user 
inner join product c on c.Id_product = a.Id_product 
Where a.id_user ='$_SESSION[id_user ]'









ประวัติการแก้ไข
2014-10-09 14:31:05
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-09 14:30:11 By : gaowteen
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : gaowteen เมื่อวันที่ 2014-10-09 14:30:11
รายละเอียดของการตอบ ::
ขอแย้งซักนิดนะครับ


การ inner join ควรทำในกรณีที่ ความสำคัญทั้งสองข้างมีน้ำหนักเท่ากัน
และไม่มีความสัมพันธ์ของตารางต่อกัน (foreign Key)

แต่ในกรณีนี้ มีน้ำหนักความต้องการ หลักและรอง และมีความสัมพันธ์ของตารางต่อกัน (Foreign Key)

ความต้องการหลักคือ user ที่มี user_id ตามกำหนด และ ตารางลอง order_product มี user_id เป็น foreign key
ดังนั้นควรใจ left join มากกว่า
Code (PHP)
$sql="select * from user
left join order_product as od on user.user_id = od.user_id
left join product pd on pd.product_id=od.product_id
where user.user_id=$_SESSION[user_id]";


ซึ่ง LEFT JOIN การค้นหา จะทำการค้นหา จาก WHERE ตารางหลัก user
แล้วค่อย หาจากตารางรอง ที่มี ข้อกำหนดตรงกัน (on)

แต่ถ้าทำในกรณีของ inner join จะทำการ หาจาก ข้อกำหนด (on) ก่อน แล้วจึงค้นหาจาก where
ซึ่งจะสร้าง temp ยาวมากกว่า ทำให้ช้ากว่าครับ

ซึ่งปกติการใช้ inner join จะใช้ where ในการค้นหาข้อกำหนดจากภายนอกอย่างเดียว ครับ


ประวัติการแก้ไข
2014-10-09 15:08:46
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-09 15:07:29 By : Chaidhanan
 

 

No. 3



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



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


แล้ว การ from จากตารางที่เป็นความต้องการของเราจริงๆ กรณีนี้คือ order_product แล้ว ด้วย inner join คือถ้าตารางนี้ไม่มี ก็ไม่สนตารางอื่น
กับ เราเลียงตาม ความถูกต้่อง คือ เอา key หลักขึ้นก่อน ตามด้วย foreign Key คือ user เอา user ขึ้นก่อน ตามด้วย left join จนถึง ตารางที่เราต้องการ คือ order_product
อย่างไหน query ไวกว่ากันครับ ความเป็น ความ รู้ ครับ
แล้ว ถ้าเขียนแบบผมมัน มีผลเสียยังไง อะครับ อันนี้ไม่ ทราบจริงๆ


ประวัติการแก้ไข
2014-10-09 15:16:54
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-09 15:15:08 By : gaowteen
 


 

No. 4



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



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


คือข้อมูลสินค้าจะอยู่ใน ตาราง product อ่ะครับ คือผมต้องการเรียกสินค้าเฉพาะที่ สมาชิกคนนี้จองขึ้นมาดูข้อมูลอ่ะครับ เพราะใน order_product จะเก็บแค่ รหัสสินค้า กับรหัสสมาชิก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-09 15:27:32 By : lungzee
 


 

No. 5



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



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


ทำได้ละครับผม ขอบคุณทุกคำปรึกษาครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-09 15:30:32 By : lungzee
 


 

No. 6



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



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


ผลออกมาได้ ก็ไม่ผิดครับ ใช้ได้ครับ แต่ถ้า เร็วกว่า ย่อมดีกว่าใช่ไหมครับ
ต้องลองดูกับ ตารางที่มีความยาวเยอะจะเห็นชัดเจนครับ

ผมมีตาราง ลุกค่าหลักหมื่น สำหรับการส่ง sms ซึ่งมีการส่งรายวันรวมกันหลักแสน records
เวลาต้องการรู้ว่าสมาชิกคนใดได้รับ message หรือไม่ ก็ต้องทำการ join member, partner_message, sms
โครงสร้างแบบเดียวกันเลยมีประสบการณ์การจอยพอสมควร
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-09 15:31:47 By : Chaidhanan
 


 

No. 7



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



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


นี่ความคิดของผมเองนะครับ inner join ไวกว่า left join ถ้าไวกว่า(ถ้าไวกว่าจริง) เราก็ไม่จำเป็นต้องไปใช้ left join นะครับ ผมก็เลย ตอบ จขกท ไปแบบนี้ แต่่่ถ้าผิดยังไงก็ ขอ อภัย ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-09 15:40:35 By : gaowteen
 

   

ค้นหาข้อมูล


   
 

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