ถามเรื่องการ Insert ข้อมูลลง table แบบ master-detail ครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ถามเรื่องการ Insert ข้อมูลลง table แบบ master-detail ครับ

ถามเรื่องการ Insert ข้อมูลลง table แบบ master-detail ครับ

 คือออกแบบ db ไว้ โดย table 2 table มีความสัมพันธ์ แบบ master detail ระหว่าง table1 และ table2

โดยที่ table2 จะต้องมี field ที่อ้างอิง มาจาก field ใน table1

เหมือนกับทำ bill กับ bill_detail อะครับ

ทีนี้ข้อมูล ใน bill ต้อง Insert เข้าไปก่อน จากนั้นถึง insert ข้อมูล bill_detail ตามทีหลัง

โดยที 1 bill อาจมี มากกว่า 1bill_detail

 

ที่จะถามคือ ตอน จะ insert ข้อมูล ใน bill_detail จะต้องมีการอ้างอิงถึง id ใน bill 

ปกติแล้วผม จะทำ insert bill ไปก่อน แล้ว จะ selete id from bill order by id desc เพื่อหา id ล่าสุดที่ insert ไป

แล้วถึง เอา id ไป ใช้ใน bill_detail อะครับ

 

มันมีวิธีง่ายๆดีๆกว่านี้รึเปล่าครับ



Likit 27-10-2010 10:17:04

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

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


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


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

 ความคิดเห็นที่ 1

 ถ้า id ของ bill เป็นแบบ autoincrement

ใช้  mysql_insert_id() เพื่อหา id ล่าสุดของ bill ได้
 
เช่น
$q="INSERT ......";
$qr=mysql_query($q);
$ID=mysql_insert_id();
 
จะได้ $ID เป็น id ของ bill ล่าสุด เอาค่านี้ใช้ใช้กับ bill_detail


Ninenik 27-10-2010
 ความคิดเห็นที่ 2

 ขอบคุณครับ ไม่เคยใช้เลย mysql_insert_id 



Likit 27-10-2010 12:55
 ความคิดเห็นที่ 3

ทำไมไม่ Design ref_field ที่ไม่ใช่ AutoIncrease ครับ
จะลดขั้นตอนได้ และ สามารถ Insert ได้ทันทีทั้ง 2 Table

อาจจะเป็น int หรื smallint
แล้ว selec max(ref)  ออกมา แล้วค่อย insert table1,table2

ผมว่าน่าจะลดขั้นตอนในการ คำนวณของเครื่องด้วย



fossil31 26-08-2011 18:45
1






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