สอบถามเรื่องการทำ Query แบบกรองค่า Min ครับ
กระทู้เก่าบอร์ด อ.Yeadram

 1,495   8
URL.หัวข้อ / URL
สอบถามเรื่องการทำ Query แบบกรองค่า Min ครับ

คือผมมี Table อยู่ Table นึง เป็นเรื่องของการเก็บประวัติการการเปลี่ยนแปลงข้อมูลของสมาชิก ดังนี้

เบอร์โทรศัพท์, ชื่อ, แพคเกจ, วันที่สมัคร, วันที่สิ้นสุด
0811111111, กวี, 001, 1 มค 53, 31 มค 53
0811111111, กวี, 002, 1 กพ 53,

จากข้อมูลดังกล่าว จะใช้เบอร์โทรศัพท์เป็นคีร์ในการจับข้อมูล โดยจับวันที่สมัครให้มีค่าเป็น Min ซึ่ง Query จะต้องแสดงเรคคอร์ดของวันที่มีผลแรกของเบอร์โทรศัพท์ 0811111111 เพียงเรคคอร์ดเดียวเท่านั้น ไม่ทราบว่าจะต้องเขียนในมุมมอง SQL ยังไงครับ เพราะผมทดลองเขียนแล้วแต่ยังไม่ได้ผลลัพธ์ออกมาตามที่ต้องการเลยครับ

8 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R05048
ลืมบอกไปครับ ว่าผลลัพธ์ที่ออกมาจะต้องเป็น

0811111111, กวี, 001, 1 มค 53, 31 มค 53

เรคคอร์ดเดียวครับ
2 @R05050
เบอร์โทรศัพท์ ใช้ First
ที่เหลือ Group ให้หมดครับ
3 @R05051
ลองทำตามความ yeadram แล้วไม่ได้ผลครับ เพราะเบอร์โทรศัพท์ที่มีมากกว่า 1 เรคคอร์ด จะเป็นเบอร์ที่มีการเปลี่ยนแปลงข้อมูลในส่วนของฟิลด์ต่างๆ และโปรแกรมจะต้องจับจากวันที่สมัครที่เป็น Min ครับ หากใช้ Group หมดจะออกมาทุกเรคคอร์ดที่มีการเปลี่ยนแปลงน่ะครับ
4 @R05052
เอาใหม่นะครับ ผมขอเรียบเรียงโจทย์อีกทีเผื่ออาจจะเข้าใจไม่ตรงกันครับ

คือผมมี Table อยู่ Table นึง เป็นเรื่องของการเก็บประวัติการการเปลี่ยนแปลงข้อมูลของสมาชิก ดังนี้

เบอร์โทรศัพท์, ชื่อ, แพคเกจ, วันที่สมัคร, วันที่สิ้นสุด
0811111111, กวี, 001, 1 มค 53, 31 มค 53
0811111111, กวี, 004, 1 กพ 53, 1 กพ 54
0811111111, กวี, 002, 2 กพ 54,


ให้แสดงเรคคอร์ดของวันที่สมัครที่เป็น Min ของเบอร์โทรศัพท์แต่ละเบอร์

ไม่ทราบว่าจะต้องเขียนในมุมมอง SQL ยังไงครับ เพราะผมทดลองเขียนแล้วแต่ยังไม่ได้ผลลัพธ์ออกมาตามที่ต้องการเลยครับ

จากตัวอย่างผลลัพธ์ที่ออกมาจะต้องเป็น

0811111111, กวี, 001, 1 มค 53, 31 มค 53

เรคคอร์ดเดียวครับ
5 @R05053
มี 2 วิธีอย่างน้อยครับคือใช้ Alias ซึ่งอาจสับสนนิดหน่อย อีกวิธีคือ ควรสร้างฟิลด์อีก 1 ฟิลด์เป็นฟิลด์ ID เป็นประเภท Autonumber จะได้ง่ายหน่อย เสร็จแล้วสร้าง Query​เลือกเฉพาะ เบอร์โทรศัพท์ (Groupby) และ ID​(Min หรือ First​ก็ได้) จากนั้นก็สร้างอีก Query อีกตัวซึ่งสร้างจาก Query ก่อนหน้ากับ Table โดยใช้ ID สร้างความสัมพันธ์ เพื่อเลือก ฟิลด์ต่างๆอีกที
6 @R05056
ทำตามที่คุณ Nova แนะนำมาแล้ว ไม่ได้อะครับ คือเรคคอร์ดของวันที่สมัครวันอื่น(ที่ไม่ใช่ Min) จะออกมาด้วยตามฟิลด์ที่มีการเปลี่ยนแปลงของข้อมูลน่ะครับ
7 @R05057
select T1.* from เทเบิล as T1 where T1.วันที่สมัคร in (select min(T2.วันที่สมัคร) from เทเบิล as T2 where T2.เบอร์โทรศัพท์ = T1.เบอร์โทรศัพท์)
8 @R05059
โอ้ วิธีคุณสันติสุข ผมลองแล้วได้ผลครับ สุดยอด

ต้องขอโทษคุณ Nova ด้วยครับ ผมดันไปใช้เบอร์โทรศัพท์สร้างความสัมพันธ์ (อ่านผิด ที่จริงแล้วต้องใช้ ID สร้างตามที่แนะนำ) และผมลองวิธีที่คุณ NOVA พูดมา ก็ใช้ได้เหมือนกันครับ

ต้องขอขอบคุณทุกท่านมากครับที่ให้ความช่วยเหลือ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3405s