กระทู้เก่าบอร์ด อ.Yeadram
        
           10,403   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
ต้องทำอย่างไรบ้างค่ะ
ขอขอบคุณล่วงหน้าค่ะ
    
  ดังนั้นขอตั้งคำถามใหม่นะค่ะ
ตารางที่ 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 
				
        
    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;
ขอบคุณค่ะ
    
    
  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)
    
  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 เดียวได้ใช่ไหมค่ะ
ขอขอบคุณและขออภัยด้วยนะคะ ที่ถามแล้วถามอีก แต่เป็นมือใหม่จริง ๆ
    
  ได้ทดลอง 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"
    
  มีทั้งหมด 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    
        
    
      ไม่แน่ใจคำถาม ถ้าเป็นตารางในฐานข้อมูลอื่น เราก็แค่ลิงค์ตารางนั้นเข้ามายังฐานข้อมูลของเราครับ    
    
  
      Time: 0.5119s
    
      
		
เปิดคิวรี่เปล่าๆ ในมุมมอง 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;