รบกวนอาจารย์หรือผู้รู้เรื่อง SQL ครับ ข้อมูล 2 Table ไม่เคยทำได้สำเร็จสะทีครับ


0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

06 พ.ค. 65 , 21:13:49
อ่าน 144 ครั้ง

ittiphol

  • สมาชิกไท.Access
  • กระทู้: 26

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ผมไม่เก่งเรื่องภาษา sql เลย ทุกวันนี้ก็ศึกษาจาก google ส่วนใหญ่จะเจอและมาเรียนรู้และทำได้
แต่ที่ผมจะทำแบบที่ต้องการนี้ทีไรทำไม่ได้เลย ต้องข้ามการใช้งานไป จากจะใช้งานง่ายๆกลายเป็นยุ่งยากขึ้น ถ้าทำตามที่คิดได้คือ

ผมมี Table1 และ Table2

[Table1]
id
name
sn1
sn2
sn3

[Table2]
id
name

========================
[Table1] Data

id                name              sn1          sn2            sn3             
1001           aaaaaaaa         abc          def             ghi
1002           bbbbbbbb         jkl           mno           pqe
1003           ccccccccc          stu          vwx            yzz
...

[Table2] Data

id                name       
1111           abc
2222           mno
3333           stu
4444           mno
5555           jkl
6666           pqe
.....
========================

[Input query Table1 หาข้อมูลจากช่อง id]
= เช่นใส่ 1002 ไป

[Output] Data ข้อมูลที่ได้ ปกติก็เหมือน query ทั่วไป
id                name              sn1          sn2            sn3   
1002           bbbbbbbb         jkl           mno           pqe

แต่ผลที่ต้องการจริงๆคือ
id                name              sn1          sn2            sn3   
1002           bbbbbbbb       5555         4444          6666

แค่ต้องการแทนค่าจากตัวหนังสือออกมาแสดงเป็นตัวเลขที่ดึงมาจาก Table2
สังเกตุได้ว่า name ของ Table2 นั้น ชื่อจะไปตรงกับ sn ของ Table1
และจะดึงข้อมูลออกมาเฉพาะที่เราใส่ในช่อง Input ที่ทำไว้ ให้ไปกรองจาก id ของ Tabel1
จึงได้ผลเป็นการดึงของมูลจาก id 1002 แต่ที่ช่อง sn1 sn2 sn3 sn....... ได้เปลี่ยนเป็นค่าตัวเลขจากชื่อที่ไปตรงกับในฟิล name ใน Table2 ครับ


รบกวนท่านผู้รู้ด้วยครับผม แก้ไม่ได้มานานแล้วครับผม



 

07 พ.ค. 65 , 14:24:42
ตอบกลับ #1

Un

อ่านแล้ว งง ส่งฐานมาดูหน่อยครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: ittiphol

07 พ.ค. 65 , 14:57:18
ตอบกลับ #2

ittiphol

  • สมาชิกไท.Access
  • กระทู้: 26

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

อ่านแล้ว งง ส่งฐานมาดูหน่อยครับ

ประมาณตามรูปแนบครับผม
คือตรงช่อง sn1 sn2 sn3 ......
ให้เปลี่ยนจากข้อมูลข้อความ เป็นตัวเลข ที่ไปตรงกับ Table2 มาแสดงแทนครับผม



รบกวนด้วยครับ หาวิธีมาหลายวันเลยครับผม  :cry:

 

08 พ.ค. 65 , 10:08:02
ตอบกลับ #3

Un

ที่เขียนมา ผมไม่ งง งงตรงที่ทำยังงัยถึงเป็นแบบนี้
ส่งบานมาแปปเดียวก็เข้าใจ ไม่ต้องถามตอบมากมาย
จากที่ดู คุณน่าจะออกแบบฐานผิด ใช้ชื่อ id เหมือนกัน แต่ข้อมูลคนละชุด
มันต้องมี id ที่เชื่อมโยงกัน ถึงบอกว่าง งง เลยอยากจะดูฐานข้อมูล

 
โพสต์นี้ได้รับคำขอบคุณจาก: ittiphol

08 พ.ค. 65 , 12:03:45
ตอบกลับ #4

UnKnown

แวะมาแจมว่า ไม่สมควรใช้ชื่อฟิวล์ name
:ninja:     ลองคิด,ลองทำแนวคนไม่เก่งแอคเซส
หมายเหตุ เพื่อความปลอดภัยโปรดสำรองข้อมูลใว้ก่อนการแก้ไข
 
โพสต์นี้ได้รับคำขอบคุณจาก: Un, ittiphol

10 พ.ค. 65 , 07:58:23
ตอบกลับ #5

PNR

ลอง DIY ดูไม่รู้ใช้การได้ไหมนะครับ

เปลี่ยนฟิลล์ Name เป็น Names

1.สร้างคิวรี่ที่ 1 ตั้งชื่อ Qry1 ใส่โค้ด
โค๊ด: [Select]
SELECT Table1.ID, Table1.Names, DLast("ID","Table2","Names = '" & [SN1] & "'") AS A, DLast("ID","Table2","Names = '" & [SN2] & "'") AS B, DLast("ID","Table2","Names = '" & [SN3] & "'") AS C, IIf(Not IsNull([A] And [B] And [C]),0,1) AS [CHECK]
FROM Table1;
2.สร้างคิวรี่ที่ 2 ใส่โค้ด
โค๊ด: [Select]
SELECT Qry1.ID, Qry1.Names, Qry1.A AS SN1, Qry1.B AS SN2, Qry1.C AS SN3
FROM Qry1
WHERE (((Qry1.CHECK)=0));

ใช้ Dlast เพื่อดึงรหัสสุดท้ายมาแสดงครับ
ที่จริงแล้ว ข้อมูลใน Table 2 นั้นควรเป็นรายการที่จะไว้เลือกข้อมูลของ Sn1 ถึง Sn3 ด้วยซ้ำ อาจใช้ Combobox ก็ได้คับ

« แก้ไขครั้งสุดท้าย: 10 พ.ค. 65 , 08:13:54 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: ittiphol

11 พ.ค. 65 , 09:38:31
ตอบกลับ #6

nonc31


 
โพสต์นี้ได้รับคำขอบคุณจาก: ittiphol

12 พ.ค. 65 , 02:05:10
ตอบกลับ #7

ittiphol

  • สมาชิกไท.Access
  • กระทู้: 26

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ขอบคุณอาจารย์ทุกท่านมากๆครับ จะลองไปทดสอบดูครับผม
เท่าที่ผมอ่านมาเจอ สามารถใช้เป็นคำสั่ง sql ในชุดเดียวได้ไหมครับโดยใช้ Left join อะไรแบบนี้ครับผม

 :smile:

 


บอร์ดเรียนรู้ Access สำหรับคนไทย