สอบถามการทำ Query ข้อมูลจากตารางครับ



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

06 เม.ย. 61 , 13:50:18
อ่าน 2051 ครั้ง

prajak

รบกวนสอบถามครับ ผมจะทำ Query ยังไงเพื่อดึง Output จากตาราง B,C,D ที่วันที่ตรงกับตาราง A ได้ครับ โดย Output ที่มีวันที่เหมือนกันให้นำมารวมกัน ตามรูปครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: royaltool, nisachol.chu

06 เม.ย. 61 , 20:36:54
ตอบกลับ #1

สันติสุข

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #1 เมื่อ: 06 เม.ย. 61 , 20:36:54 »
ให้ตาราง A ชื่อ TA มีฟิลด์ชื่อ DateA
ให้ตาราง B ชื่อ TB มีฟิลด์ชื่อ DateB และ Output
ให้ตาราง C ชื่อ TC มีฟิลด์ชื่อ DateC และ Output
...

ให้สร้างคิวรี่ชื่อ JoinOutput ซึ่งมี SQL เป็น
SELECT TA.DateA, TB.Output, "OutputB" AS HeadName FROM TA LEFT JOIN TB ON TA.DateA = TB.dateB
UNION ALL
SELECT TA.DateA, TC.Output, "OutputC" AS HeadName FROM TA LEFT JOIN TC ON TA.DateA = TC.dateC
UNION ALL
...

ให้สร้างคิวรี่ชื่อ FinalOutput ซึ่งมี SQL เป็น
TRANSFORM Sum(JoinOutput.Output) AS SumOfOutput
SELECT JoinOutput.DateA
FROM JoinOutput
GROUP BY JoinOutput.DateA
PIVOT JoinOutput.HeadName;

รัน FinalOutput ก็จะได้ผลลัพธ์ที่ต้องการครับ
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: PookPuy, prajak, royaltool

10 เม.ย. 61 , 08:58:39
ตอบกลับ #2

prajak

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #2 เมื่อ: 10 เม.ย. 61 , 08:58:39 »
เพิ่งจะได้ลองทำตามที่อาจารย์แนะนำครับ ขึ้น error ตามรูป ไม่รู้ว่าผิดตรงไหนครับ

 

10 เม.ย. 61 , 09:55:21
ตอบกลับ #3

สันติสุข

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #3 เมื่อ: 10 เม.ย. 61 , 09:55:21 »
ถ้าไม่มีเชื่อมเทเบิลอื่นต่อไปอีกแล้ว ก็ไม่ต้องมีคำว่า UNION ALL ปิดท้ายครับ
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

10 เม.ย. 61 , 10:13:23
ตอบกลับ #4

prajak

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #4 เมื่อ: 10 เม.ย. 61 , 10:13:23 »
ทำได้แล้วครับ ขอบคุณมากครับอาจารย์

 

19 เม.ย. 61 , 13:20:03
ตอบกลับ #5

prajak

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #5 เมื่อ: 19 เม.ย. 61 , 13:20:03 »
อาจารย์ครับ รบกวนสอบถามเพิ่มเติมนะครับ หลังจากสร้าง Query FinalOutput แล้วสร้างฟอร์มจาก query FinalOutputแล้ว ทำไมผมใช้ macro apply filter เพื่อกรองวันที่ไม่ได้อะครับ ขึ้น error ตามรูป สร้างจาก vba ก็error เหมือนกันเลย


 

19 เม.ย. 61 , 14:07:08
ตอบกลับ #6

ปิ่นณรงค์

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #6 เมื่อ: 19 เม.ย. 61 , 14:07:08 »
ไม่ต้องอ้างคำสั่ง form!... แล้วคับ ใส่ชื่อ control ที่ ระบุวันที่ได้เลย
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

19 เม.ย. 61 , 14:17:40
ตอบกลับ #7

prajak

> > สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #7 เมื่อ: 19 เม.ย. 61 , 14:17:40 »
ไม่ต้องอ้างคำสั่ง form!... แล้วคับ ใส่ชื่อ control ที่ ระบุวันที่ได้เลย
ก็ยังไม่ได้ครับ



 

19 เม.ย. 61 , 15:55:06
ตอบกลับ #8

ปิ่นณรงค์

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #8 เมื่อ: 19 เม.ย. 61 , 15:55:06 »
นำไปใว้ในปุ่มสถานะ Click

โค๊ด: [Select]
Me.Filter = "[DateA] Between Forms.FinalOutput.DateFrom And Forms.FinalOutput.DateTo"
Me.FilterOn = True


หรือ จะใช้  DoCmd.ApplyFilter ก็ทำได้ ตัวอย่างตามนี้ครับ
โค๊ด: [Select]
DoCmd.ApplyFilter , "[DateA] Between Forms.FinalOutput.DateFrom And Forms.FinalOutput.DateTo"
ตัวอย่างด้านล่าง
« แก้ไขครั้งสุดท้าย: 19 เม.ย. 61 , 16:14:59 โดย Newbies »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

19 เม.ย. 61 , 16:29:29
ตอบกลับ #9

prajak

> > สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #9 เมื่อ: 19 เม.ย. 61 , 16:29:29 »
นำไปใว้ในปุ่มสถานะ Click

โค๊ด: [Select]
Me.Filter = "[DateA] Between Forms.FinalOutput.DateFrom And Forms.FinalOutput.DateTo"
Me.FilterOn = True


หรือ จะใช้  DoCmd.ApplyFilter ก็ทำได้ ตัวอย่างตามนี้ครับ
โค๊ด: [Select]
DoCmd.ApplyFilter , "[DateA] Between Forms.FinalOutput.DateFrom And Forms.FinalOutput.DateTo"
ตัวอย่างด้านล่าง
ต้องขอบคุณมากสำหรับความช่วยเหลือนะครับ แต่ยังคงไม่ได้ครับ ปกติผมใช้คำสั่งพวกนี้กับฟอร์มที่สร้างจาก query ก็ไม่มีปัญหาอะไร สังเกตว่าฟอร์มนี้สร้างจาก query ที่เป็น crosstab query ก็เลยไม่รู้ว่าต้องทำยังไงครับ

 

19 เม.ย. 61 , 16:58:05
ตอบกลับ #10

ปิ่นณรงค์

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #10 เมื่อ: 19 เม.ย. 61 , 16:58:05 »
มีไฟล์ตัวอย่างไหมครับ
« แก้ไขครั้งสุดท้าย: 19 เม.ย. 61 , 17:18:40 โดย Newbies »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

20 เม.ย. 61 , 08:24:29
ตอบกลับ #11

prajak

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #11 เมื่อ: 20 เม.ย. 61 , 08:24:29 »
ส่งไฟล์ตัวอย่างมาให้ดูครับ

 

21 เม.ย. 61 , 03:52:49
ตอบกลับ #12

ปิ่นณรงค์

> > สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #12 เมื่อ: 21 เม.ย. 61 , 03:52:49 »
ส่งไฟล์ตัวอย่างมาให้ดูครับ
ติดปัญหาจริงๆด้วยครับท่านแต่ถ้าจะสร้างดัดแปลงการค้นหาแบบนี้ได้ไหม
1.เมื่อได้ Crosstab มาแล้ว ให้ Append มายัง ตารางใหม่ และ กำหนด Form กับตารางใหม่นั้นมันก็จะสามารถค้นหาได้เหมือนกันครับ
โค๊ด: [Select]
Private Sub Command62_Click()
DoCmd.ApplyFilter , "[DateA] Between Forms.FinalOutput.DateFrom And Forms.FinalOutput.DateTo"
End Sub
Private Sub Form_Open(Cancel As Integer)
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE * FROM TblFinalOutput"
    DoCmd.OpenQuery "MakeTblFinalOutput", acViewNormal
    Me.Form.Requery
End Sub
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: prajak, panita

23 เม.ย. 61 , 15:40:49
ตอบกลับ #13

prajak

> > > สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #13 เมื่อ: 23 เม.ย. 61 , 15:40:49 »
ส่งไฟล์ตัวอย่างมาให้ดูครับ
ติดปัญหาจริงๆด้วยครับท่านแต่ถ้าจะสร้างดัดแปลงการค้นหาแบบนี้ได้ไหม
1.เมื่อได้ Crosstab มาแล้ว ให้ Append มายัง ตารางใหม่ และ กำหนด Form กับตารางใหม่นั้นมันก็จะสามารถค้นหาได้เหมือนกันครับ
โค๊ด: [Select]
Private Sub Command62_Click()
DoCmd.ApplyFilter , "[DateA] Between Forms.FinalOutput.DateFrom And Forms.FinalOutput.DateTo"
End Sub
Private Sub Form_Open(Cancel As Integer)
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE * FROM TblFinalOutput"
    DoCmd.OpenQuery "MakeTblFinalOutput", acViewNormal
    Me.Form.Requery
End Sub
ขอบคุณมากครับคุณNewbies ทำตามที่แนะนำได้แล้วครับ แต่หลักการทำงานจริงๆต้องเรียนรู้และทำความเข้าใจเพิ่มเติม เพราะผมเพิ่งหัดเขียนครับ ตอนนี้ยังงงกับอีกตารางหนึ่งครับ ขอลองลองผิดลองถูกด้วยตัวเองดูก่อนนะครับ ถ้าไม่ได้ยังไงคงต้องรบกวนอีกครั้งนะครับ

 

23 เม.ย. 61 , 19:11:53
ตอบกลับ #14

ปิ่นณรงค์

> สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #14 เมื่อ: 23 เม.ย. 61 , 19:11:53 »
แลกเปลี่ยนความรู้กันคับพี่ เจอเคสใหม่ๆเราได้ศึกษาทำกันคับ :yuush:
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

26 เม.ย. 61 , 17:11:20
ตอบกลับ #15

prajak

> > สอบถามการทำ Query ข้อมูลจากตารางครับ
« ตอบกลับ #15 เมื่อ: 26 เม.ย. 61 , 17:11:20 »
แลกเปลี่ยนความรู้กันคับพี่ เจอเคสใหม่ๆเราได้ศึกษาทำกันคับ :yuush:
รบกวนสอบถามเพิ่มเติมนะครับ ที่ผมเคยเกริ่นไว้
 ผมมีข้อมูลที่ Query มาได้ทั้งหมด 6 query ดังรูป


และอยากให้ได้ Output ออกมาโดยที่ สมมติหากเรากรองวันที่ 1/3/2018 ถึง 31/3/2018 ให้ ODNo ที่อยู่ในช่วงของวันที่ที่เรากรอง ODNoไหนที่เหมือนกันดึงมาแสดงแค่อันเดียว และเอา TotalCost ของODNo นั้นมารวมกัน คล้ายๆตามตารางที่ด้านล่างนี้ครับ


 


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