กระทู้เก่าบอร์ด อ.Yeadram
1,495 8
URL.หัวข้อ /
URL
สอบถามเรื่องการทำ Query แบบกรองค่า Min ครับ
คือผมมี Table อยู่ Table นึง เป็นเรื่องของการเก็บประวัติการการเปลี่ยนแปลงข้อมูลของสมาชิก ดังนี้
เบอร์โทรศัพท์, ชื่อ, แพคเกจ, วันที่สมัคร, วันที่สิ้นสุด
0811111111, กวี, 001, 1 มค 53, 31 มค 53
0811111111, กวี, 002, 1 กพ 53,
จากข้อมูลดังกล่าว จะใช้เบอร์โทรศัพท์เป็นคีร์ในการจับข้อมูล โดยจับวันที่สมัครให้มีค่าเป็น Min ซึ่ง Query จะต้องแสดงเรคคอร์ดของวันที่มีผลแรกของเบอร์โทรศัพท์ 0811111111 เพียงเรคคอร์ดเดียวเท่านั้น ไม่ทราบว่าจะต้องเขียนในมุมมอง SQL ยังไงครับ เพราะผมทดลองเขียนแล้วแต่ยังไม่ได้ผลลัพธ์ออกมาตามที่ต้องการเลยครับ
เบอร์โทรศัพท์, ชื่อ, แพคเกจ, วันที่สมัคร, วันที่สิ้นสุด
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
2 @R05050
เบอร์โทรศัพท์ ใช้ First
ที่เหลือ Group ให้หมดครับ
ที่เหลือ 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
เรคคอร์ดเดียวครับ
คือผมมี 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 พูดมา ก็ใช้ได้เหมือนกันครับ
ต้องขอขอบคุณทุกท่านมากครับที่ให้ความช่วยเหลือ
ต้องขอโทษคุณ Nova ด้วยครับ ผมดันไปใช้เบอร์โทรศัพท์สร้างความสัมพันธ์ (อ่านผิด ที่จริงแล้วต้องใช้ ID สร้างตามที่แนะนำ) และผมลองวิธีที่คุณ NOVA พูดมา ก็ใช้ได้เหมือนกันครับ
ต้องขอขอบคุณทุกท่านมากครับที่ให้ความช่วยเหลือ
Time: 0.3405s
0811111111, กวี, 001, 1 มค 53, 31 มค 53
เรคคอร์ดเดียวครับ