การเรียง Record ตามวันที่เพื่อดึงข้อมูลมาใช้ใน Query


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

13 พ.ย. 62 , 09:20:56
อ่าน 2148 ครั้ง

Mercury

ต้องการดึงข้อมูลจาก Table โดยในคิวรี่ได้กำหนดว่าจะดึง Inhouse ที่รับเข้ามาล่าสุด (ใช้รูปแบบ Last กับฟิลด์ Inhouse)
(ดังภาพที่ 1)




ซึ่งในเวลาคิวรี่ดึงมาจะปรากฏข้อมูลที่คีย์ล่าสุดโดยไม่เรียงตามวันที่แต่ดึงเป็น Record ที่เพิ่งคีย์เข้ามาล่าสุดแทน
เช่น ตาราง (ดังภาพที่ 2) มีการคีย์ข้อมูลหลายวันที่



แต่ในคิวรี่ที่ต้องการกลับเลือกดึง Inhouse 1T020000216 (ดังภาพที่ 3)
ซึ่งที่ต้องการคืออยากให้ดึง Inhouse ของวันที่ล่าสุดค่ะ




ต้องทำยังไงคิวรี่ถึงจะสามารถดึง Inhouse จาก Record ที่เป็นวันที่ล่าสุดคะ

Note1 : ในฟิลด์วันที่มีการเลือกเป็นรูปแบบ Date/Time แล้ว
Note2 : ข้อมูลในตารางไม่ได้เรียงวันที่ค่ะไม่ทราบว่าเกี่ยวหรือป่าวแล้วมีวิธีไหนที่ทำให้ข้อมูลเรียงตามวันที่ได้บ้างคะ




« แก้ไขครั้งสุดท้าย: 13 พ.ย. 62 , 15:25:08 โดย Mercury »
:dizzy:
 

13 พ.ย. 62 , 18:37:51
ตอบกลับ #1

OddyWriter

ใช้ Top-N Query ก็น่าจะพอมั๊งครับ
รับจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

15 พ.ย. 62 , 08:02:43
ตอบกลับ #2

Mercury

ไม่ทราบว่าเลือกคำสั่งนี้ตรงไหนคะ
:dizzy:
 

15 พ.ย. 62 , 09:30:11
ตอบกลับ #3

OddyWriter

รับจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

15 พ.ย. 62 , 09:41:13
ตอบกลับ #4

Mercury



มันขึ้นเป็น All อยู่แล้วค่ะ
« แก้ไขครั้งสุดท้าย: 15 พ.ย. 62 , 10:11:03 โดย Mercury »
:dizzy:
 

15 พ.ย. 62 , 09:50:24
ตอบกลับ #5

OddyWriter

ถ้าเลือก All ก็เป็น All สิครับ
ถ้าเลือก 5 ก็ได้ 5 อันดับแรก
ถ้าใส่ 3 ก็ได้ 3 อันดับแรก

แล้วต้องกำหนดการ Sort ร่วมด้วย
รับจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

15 พ.ย. 62 , 10:05:46
ตอบกลับ #6

Mercury

ต้องการให้ขึ้นข้อมูลรหัสสินค้าที่เป็นวันที่คีย์เข้ามาล่าสุด ของสถานที่นี้
เลยเลือกเป็น 1 แต่กลายเป็นว่าหน้าแสดงผลขึ้นข้อมูลมาตัวเดียวค่ะ

:dizzy:
 

15 พ.ย. 62 , 11:42:45
ตอบกลับ #7

OddyWriter

ก็ Top-N ไงครับ เลือก 3 ก็แสดง 3 เลือก 1 ก็แสดง 1
แล้วการสั่งให้ Sort คือการเรียงลำดับข้อมูลที่ต้องการ
รับจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

15 พ.ย. 62 , 11:58:31
ตอบกลับ #8

Mercury

Top-n นี่คือการเลือกข้อมูลจากตารางมาแสดงถูกมั้ยคะ
แต่ที่ต้องการคือเลือกหลายๆ Record (ที่ไม่ซ้ำกันในที่นี้คือสถานที่ เช่น AA01) จากฟิลด์หนึ่งเพื่อแสดงข้อมูลอัพเดทว่าสถานที่นี้เก็บสินค้าอะไรอยู่ในวันที่ล่าสุดค่ะ

ให้ปรากฎดังนี้
สถานที่   ชื่อสินค้า
AA01   สินค้า A
AA02    สินค้า B

ซึ่งสินค้าที่จะมาปรากฎในตาราง ต้องเป็นสินค้าที่เป็นวันที่ล่าสุดจากสถานที่นั้นๆ
:dizzy:
 

15 พ.ย. 62 , 12:30:48
ตอบกลับ #9

OddyWriter

ครั้งหน้าอยากให้ตั้งคำถามให้ชัดเจนหน่อยนะครับ

ถ้าคุณต้องการอย่างกระทู้ล่าสุด คุณต้องสร้างคิวรีเพื่อดึงเฉพาะข้อมูลสถานที่มาก่อน 1 คิวรี (สมมติชื่อ qryA) แล้วกำหนดเป็น Unique Value เพื่อกรองเอาข้อมูลที่ Duplicated ออก
จากนั้นก็สร้างคิวรีอีก 1 อัน โดยนำ qryA มาใส่ Code Dlast ของฟิลด์ Date

อันนี้คือหลักการนะครับ ที่เหลือคุณต้องลองเอง
รับจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

16 พ.ย. 62 , 08:55:18
ตอบกลับ #10

Mercury

ครั้งหน้าอยากให้ตั้งคำถามให้ชัดเจนหน่อยนะครับ

ถ้าคุณต้องการอย่างกระทู้ล่าสุด คุณต้องสร้างคิวรีเพื่อดึงเฉพาะข้อมูลสถานที่มาก่อน 1 คิวรี (สมมติชื่อ qryA) แล้วกำหนดเป็น Unique Value เพื่อกรองเอาข้อมูลที่ Duplicated ออก
จากนั้นก็สร้างคิวรีอีก 1 อัน โดยนำ qryA มาใส่ Code Dlast ของฟิลด์ Date

อันนี้คือหลักการนะครับ ที่เหลือคุณต้องลองเอง

หมายถึงเป็นของฟิลด์ Date หรอคะ
ที่ต้องการคือเป็น Last ของรหัสสินค้าค่ะ
ตอนใช้ Dlast ติดปัญหาว่าสถานที่นี้มีหลายรหัสสินค้าแต่ว่าการบันทึกข้อมูลไม่ได้เรียงกันตามวันที่ (ซึ่งแต่ละสถานที่จะเก็บได้รหัสสินค้าเดียว อันอื่นที่เคยอยู่ก่อนหน้าจะถูกจ่ายออกไปแล้ว)
ทำให้ผลของ qry ที่ออกมาจับตัวที่คีย์เข้าไปล่าสุดแทนที่จะเป็นวันที่ล่าสุดค่ะ
:dizzy:
 

16 พ.ย. 62 , 09:09:11
ตอบกลับ #11

OddyWriter

คือ
1. สินค้ามีหลายตัวถูกไหมครับ
2. สินค้าแต่ละตัวมีการป้อนข้อมูลหลายครั้งถูกไหมครับ
3. การบันทึกข้อมูลไม่ได้เรียงกันตามวันที่ถูกไหมครับ แต่ข้อมูลที่บันทึกก็มีวันที่ของข้อมูลถูกไหมครับ

การจะรู้ว่ารายการไหนมาก่อนมาหลัง ก็อยู่ที่วันที่หรือเวลา ไม่ได้อยู่ที่รหัสสินค้าครับ เหมือนโลกนี้มีคนชื่อ "สมชาย" อยู่กี่คนไม่รู้ล่ะ การที่จะรู้ว่าสมชายคนไหนเกิดก่อน เกิดหลังก็ดูจากวันเกิด ไม่ได้ดูจากชื่อสมชาย

ดังนั้นคุณทำอย่างไรล่ะ ก็ต้องใช้ DLast หรือไม่ก็ DMax กับข้อมูลวันเกิดของสมชาย ก็จะรู้ว่าสมชายคนไหนเกิดล่าสุด (คืออายุน้อยที่สุด)

ปล. เว็บนี้มีคนชื่อสมชายไหมอะ??

รับจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

16 พ.ย. 62 , 10:40:47
ตอบกลับ #12

Mercury

ลองทำแล้วแต่ยังงงๆค่ะ ท่านใดพอมีตัวอย่างรบกวนหน่อยนะคะ
:dizzy:
 

16 พ.ย. 62 , 18:14:08
ตอบกลับ #13

TTT

ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator
 
โพสต์นี้ได้รับคำขอบคุณจาก: OddyWriter, Mercury

18 พ.ย. 62 , 09:01:51
ตอบกลับ #14

Mercury



ขึ้นเป็นรายการเดียวที่เป็นวันที่ล่าสุดตามภาพค่ะ
แต่ว่าอยากให้ขึ้นทุกสถานที่ที่มีอยู่ในระบบด้วยค่ะ (โดยไม่ซ้ำกัน)

สามารถเพิ่มเงื่อนไขให้ดึงทั้งวันที่ล่าสุดและแสดงข้อมูลทุกสถานที่ที่ไม่ซ้ำกันพร้อมกันได้มั้ยคะ
« แก้ไขครั้งสุดท้าย: 18 พ.ย. 62 , 09:10:48 โดย Mercury »
:dizzy:
 

19 พ.ย. 62 , 05:06:03
ตอบกลับ #15

สันติสุข

1. กลับไปที่ภาพที่ 2 ในคำถามแรก วันที่ล่าสุดที่ต้องการคือวันที่เท่าไหร่ และความหมาของคำว่า "ล่าสุด" คืออะไร วันที่มีค่ามากสุดของ Place นั้นๆ หรือ วันที่มีค่ามากสุดก่อนวันปัจจุบันสำหรับ Place นั้นๆ หรืออะไร ?

2. กลับไปภาพที่ 1  ฟิลด์อื่นๆ ยกเว้นฟิลด์ที่เป็นผลรวมจากฟังก์ชั่น Sum  ฟิลด์เหล่านั้นได้มาจากเรคอร์ดเดียวกันกับเรคอร์ดของวันที่ "ล่าสุด" ใช่หรือไม่ หรือได้มาจากไหน ?

3. ฟิลด์ผลรวมจากฟังก์ชั่น Sum  เกิดจากการรวมตั้งแต่วันไหนจนถึงวันไหน ?

ปล. ส่วนใหญ่คุณจะเขียนไม่ชัดเจน
« แก้ไขครั้งสุดท้าย: 19 พ.ย. 62 , 05:16:25 โดย สันติสุข »
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

19 พ.ย. 62 , 08:06:13
ตอบกลับ #16

Mercury

1. กลับไปที่ภาพที่ 2 ในคำถามแรก วันที่ล่าสุดที่ต้องการคือวันที่เท่าไหร่ และความหมาของคำว่า "ล่าสุด" คืออะไร วันที่มีค่ามากสุดของ Place นั้นๆ หรือ วันที่มีค่ามากสุดก่อนวันปัจจุบันสำหรับ Place นั้นๆ หรืออะไร ?

2. กลับไปภาพที่ 1  ฟิลด์อื่นๆ ยกเว้นฟิลด์ที่เป็นผลรวมจากฟังก์ชั่น Sum  ฟิลด์เหล่านั้นได้มาจากเรคอร์ดเดียวกันกับเรคอร์ดของวันที่ "ล่าสุด" ใช่หรือไม่ หรือได้มาจากไหน ?

3. ฟิลด์ผลรวมจากฟังก์ชั่น Sum  เกิดจากการรวมตั้งแต่วันไหนจนถึงวันไหน ?

ปล. ส่วนใหญ่คุณจะเขียนไม่ชัดเจน

1. ภาพที่ 2 จากสถานที่ AA114 วันที่ล่าสุดที่หมายถึงคือ 31/1/2563 คือเลข 5 ในฟิลด์ Inhouse แต่คิวรี่กลับดึง 10T200000216 มาโชว์แทน
2. ต้องการให้เป็นวันที่ล่าสุดค่ะ แต่ลองใช้ฟิลด์ Last แล้วคิวรี่ดึงตัวที่คีย์เข้าไปล่าสุด ถึงแม้จะไม่ใช่วันที่ล่าสุด
3. เป็นผลรวมของสถานที่นั้นๆ ซึ่งถ้ามีการเปลี่ยนเป็นรหัสสินค้าตัวใหม่ สินค้าที่อยู่ก่อนหน้าจะต้องถูกจ่ายออกจนหมดก่อน
« แก้ไขครั้งสุดท้าย: 19 พ.ย. 62 , 08:11:37 โดย Mercury »
:dizzy:
 

19 พ.ย. 62 , 11:38:03
ตอบกลับ #17

สันติสุข

เปลี่ยนโหมดคิวรี่จาก Design View ไปเป็น SQL View แล้วเขียนคำสั่งนี้ลงไปแทนครับ

select T1.*, (select sum(T3.Inboxes) from [In] as T3 where T3.place = T1.place) as SumOfBoxin
from [In] as T1
where T1.[date] = (select max(T2.[date]) from [In] as T2 where T2.place = T1.place)
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury


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


 

Sitemap 1 2 3 4 5