update ข้อมูล 2 ตาราง
กระทู้เก่าบอร์ด อ.Yeadram

 9,743   13
URL.หัวข้อ / URL
update ข้อมูล 2 ตาราง

ต้องการ update ข้อมูล 2 ตาราง ลักษณะเดียวกับคำถามที่ 2424 ในเว็บบอร์ดเก่าของ อ.สุภาพค่ะ แต่เป็นมือใหม่จึงไม่เข้าใจว่า code ที่ให้ต้องเขียนที่ไหนอย่างไร หรือต้องเขียนใน query ค่ะ
ดังนั้นขอตั้งคำถามใหม่นะค่ะ

ตารางที่ 1 ประกอบด้วย feild และข้อมูลดังนี้
No amount     Yeild
1          10        Y
2          20        N
3          30        Y
4          40        N
5          50        N

ตารางที่ 2 ประกอบด้วย feild และข้อมูลดังนี้
No amount     Yeild
1          50        Y
2          50        Y
4          80        Y

ต้องการให้นำข้อมูลจากตารางที่2 update ลงในตารางที่1 โดยดูจาก No เป็นหลัก ให้ผลที่ได้ดังนี้
ตารางที่ 1
No amount     Yeild
1          50        Y
2          50        Y
3          30        Y
4          80        Y
5          50        N

ต้องทำอย่างไรบ้างค่ะ
ขอขอบคุณล่วงหน้าค่ะ

13 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R01827
เขียนในคิวรี่ครับ
เปิดคิวรี่เปล่าๆ ในมุมมอง sql แล้วเอา statement จากตัวอย่างไปวางดูครับ
แทนค่า table1 ด้วยชื่อตารางที่1 ของคุณ
แทนค่า table2 ด้วยชื่อตารางที่2 ของคุณ
แทนค่าชื่อฟิลด์ของตัวอย่าง ด้วย amount
แทนค่าฟิลด์ที่ join ด้วย    [ชื่อตารางที่1].[no]
(คำว่า No เป็นคำสงวน คุณเอามาตั้งเป็นชื่อฟิลด์ ต้องใส่เครื่องหมายคร่อมทุกๆ ครั้งที่เขียนเป็น โค้ด หรือ statement)

เมื่อเสร็จแล้วลองเปลี่ยนมุมมอง กลับมาเป็น มุมมองออกแบบดูครับ อาจจะเข้าใจได้เร็วขึ้น

UPDATE Table1 LEFT JOIN Table2 ON Table1.[no]= Table2.[no] SET Table1.amount = Table2.amount, table1.yield=table2.yield;
2 @R01831
INNER JOIN นะครับ ไม่ใช่ LEFT JOIN
3 @R01832
ขอบคุณ อาจารย์ครับ
4 @R01833
ขอบพระคุณอาจารย์ทั้ง 2 มากค่ะ เข้าใจอย่างแจ่มแจ้งเลย แถมได้ความรู้เพิ่มเติมอึกด้วย แต่ขอถามเพิ่มเติมอีกหน่อยนะค่ะ
1. จะรู้ได้อย่างไรว่าคำใดบ้างเป็นคำสงวนค่ะ สามารถหาข้อมูลได้ที่ไหนบ้าง
2. หากต้องการทั้ง update และเพิ่มข้อมูลจากตารางที่ 2 ไปตารางที่ 1 ด้วย สามารถเขียนใน Code เดียวกันได้หรือไม่ค่ะ
ซึ่งได้ทดลองทำ query insert ได้ code ดังนี้ค่ะ (เปลี่ยนชื่อฟิลด์ จาก No เป็น Annum ค่ะ)

INSERT INTO Table1 ( Annm, amount, Yield )
SELECT Table2.Annm, Table2.amount, Table2.Yield
FROM Table1, Table2;

ขอบคุณค่ะ
5 @R01839
คุณต้องเลือกเรคอร์ดจาก Table2 ที่ไม่ปรากฏ Annm อยู่ใน Table1 แล้วจึง insert เรคอร์ดที่ว่านี้เข้า Table1 ... ดังนั้นคุณต้องใช้ Sub Query เข้าช่วย ก็จะได้คิวรี่เป็นดังนั้น


INSERT INTO Table1 ( Annm, amount, Yield )
SELECT T2.Annm, T2.amount, T2.Yield from Table2 as T2
WHERE NOT EXISTS (SELECT T1.* from Table1 as T1 where T1.Annm = T2.Annm)
6 @R01845
ขอบคุณอาจารย์สันติสุขค่ะ

ได้ทดลอง Query ที่อาจารย์ให้แล้วค่ะ

INSERT INTO Table1 ( Annm, amount, Yield )
SELECT T2.Annm, T2.amount, T2.Yield from Table2 as T2
WHERE NOT EXISTS (SELECT T1.* from Table1 as T1 where T1.Annm = T2.Annm)
ผลคือเป็นการเพิ่มข้อมูลเท่านั้นไม่มีการ update

ขอถามเพื่อความเข้าใจอีกครั้งนะค่ะ

ถ้าต้องการ update ข้อมูล ต้องใช้ Query update
แต่หากต้องการ เพิ่มข้อมูล ต้องใช้ Query insert
นั่นคือต้องเขียน Query 2 ครั้ง กด Query แยกกันในแต่ละครั้ง ไม่สามารถเขียนเพียง Query เดียวได้ใช่ไหมค่ะ

ขอขอบคุณและขออภัยด้วยนะคะ ที่ถามแล้วถามอีก แต่เป็นมือใหม่จริง ๆ
7 @R01848
ใช่ครับ ต้องมี 2 คิวรี่ แต่คุณก็ไม่ต้องกด 2 ทีก็ได้นี่ครับ ไม่ว่าจะเขียนด้วย VBA หรือทำเป็นแมโคร คุณก็สามารถเขียนให้ทำคิวรี่แรก แล้วตามด้วยคิวรี่ที่ 2 ไปได้เลยนี่ครับ
8 @R01850
ขอบคุณค่ะ อาจารย์สันติสุข
เริ่มเข้าใจแล้วค่ะ
9 @R08259
ขอบคุณอาจารย์ Yeadram..เพราะประโยคนี้ผมได้ใช้ประโยชน์ครับ (กำลังต้องการพอดีเชียว ถ้าไม่ได้คงต้องคีย์กันจนวูบไปเลยครับ...500-600 data ต่อ 1 field
มีทั้งหมด 2 field ก็......1000 data key in)

UPDATE Table1 LEFT JOIN Table2 ON Table1.[no]= Table2.[no] SET Table1.amount = Table2.amount, table1.yield=table2.yield;

หมายเหตุ คำว่า "LEFT" เปลี่ยนเป็น "INNER"
10 @R22926
ถ้าต้องการ insert ข้อมูลลงใน table แล้วข้อมูลนั้นมีอยู้แล้วโดยเช็คจาก ID ถ้ามีอยู่แล้วอยากให้ update ข้อมูล ถ้าไม่มีก็ insert ปกติพอจะมีแนวทางไหมครับ
11 @R22931
ข้อมูลที่จะมา insert หรือ update เป็นข้อมูลที่มีอยู่ในตารางอีกตารางหนึงหรือเปล่า ถ้าใช่ ที่ตอบๆมาข้างบน ก็คือแนวทางอยู่แล้วครับ
12 @R23846
UPDATE Table1 INNER JOIN Table2 ON Table1.[no]= Table2.[no] SET Table1.amount = Table2.amount, table1.yield=table2.yield;

ถ้าต้องการปรับปรุงจาก ตาราง อีกไฟล์ เราต้องเพิ่มคำสั่งอย่างไรครับ
13 @R23850
ไม่แน่ใจคำถาม ถ้าเป็นตารางในฐานข้อมูลอื่น เราก็แค่ลิงค์ตารางนั้นเข้ามายังฐานข้อมูลของเราครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2752s