Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ ระบบฐานข้อมูล
Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ การเขียนโปรแกรม
Access : เป็นได้ทั้งตัวเก็บฐานข้อมูล และตัวจัดการฐานข้อมูล
Thai Access : บอร์ดเสริมการเรียนรู้ Access ด้วยภาษาไทย

น้อมรำลึกในพระมหากรุณาธิคุณอันหาที่สุดมิได้ พระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดชฯ พระผู้เสด็จสู่สวรรคาลัย

Back to Board : Thai Access Webboard New Topic    Reply
update ข้อมูล 2 ตาราง

Topic by Message Posted : on : 3/4/2552 20:49:35
Laksika  ต้องการ 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 2 pages and you are on page number 1

Reply by Message on : 4/4/2552 8:54:46
yeadram
(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;
Back to Top
Reply by Message on : 4/4/2552 12:28:42
สันติสุข
(R01831)
INNER JOIN นะครับ ไม่ใช่ LEFT JOIN
Back to Top
Reply by Message on : 4/4/2552 15:05:15
yeadram
(R01832)
ขอบคุณ อาจารย์ครับ
Back to Top
Reply by Message on : 4/4/2552 20:27:30
Laksika
(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;

ขอบคุณค่ะ

Back to Top
Reply by Message on : 5/4/2552 12:58:14
สันติสุข
(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)
Back to Top
Reply by Message on : 6/4/2552 10:08:14
Laksika
(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 เดียวได้ใช่ไหมค่ะ

ขอขอบคุณและขออภัยด้วยนะคะ ที่ถามแล้วถามอีก แต่เป็นมือใหม่จริง ๆ
Back to Top
Reply by Message on : 6/4/2552 11:01:31
สันติสุข
(R01848)
ใช่ครับ ต้องมี 2 คิวรี่ แต่คุณก็ไม่ต้องกด 2 ทีก็ได้นี่ครับ ไม่ว่าจะเขียนด้วย VBA หรือทำเป็นแมโคร คุณก็สามารถเขียนให้ทำคิวรี่แรก แล้วตามด้วยคิวรี่ที่ 2 ไปได้เลยนี่ครับ
Back to Top
Reply by Message on : 6/4/2552 11:43:50
Laksika
(R01850)
ขอบคุณค่ะ อาจารย์สันติสุข
เริ่มเข้าใจแล้วค่ะ
Back to Top
Reply by Message on : 24/2/2554 20:34:40
Twin
(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"
Back to Top
Reply by Message on : 27/1/2560 21:42:28
anchai
(R22926)
ถ้าต้องการ insert ข้อมูลลงใน table แล้วข้อมูลนั้นมีอยู้แล้วโดยเช็คจาก ID ถ้ามีอยู่แล้วอยากให้ update ข้อมูล ถ้าไม่มีก็ insert ปกติพอจะมีแนวทางไหมครับ
Back to Top
Page:   1 2 Next >>

Reply

 *Indicates required fields
Format:
Bold Under Line Italic Add Hyperlink Add Email Link Italic List Indent Add Image Emoticons Insert code Mode:
Message:*
Your Name*:
Normal word*: Please input : ไทยแอ็คเซส
+++ webboard source: ASPThai.Net Webboard 6.0 webbord +++++++ admin : yeadram +++