กระทู้เก่าบอร์ด อ.Yeadram
1,671 6
URL.หัวข้อ /
URL
จะแก้ไขโจทย์นี้ด้วย SQL ยังไงครับ
พอดีจะสร้าง Query สำหรับแสดงข้อมูลประวัติเบอร์โทรที่มีการเปลี่ยนแพคเกจน่ะครับ โดยผมมีข้อมูลประวัติเบอร์โทรศัพท์ใน Table นึง มีข้อมูล ดังนี้
เบอร์โทรศัพท์, แพคเกจ, ชื่อ, วันที่มีผล
0811111111, 001, เกวลี, 1Jan10
0811111111, 001, เกวลิน, 1Feb10
0811111111, 002, เกวลิน, 1Mar10
0811111111, 002, เกวลัย, 1Apr10
โดยจะต้องแสดงเรคคอร์ดวันที่มีผลแรกของแต่ละเพคเกจ ผลลัพธ์คือ
0811111111, 001, เกวลี, 1Jan10
0811111111, 002, เกวลิน, 1Mar10
ขอรบกวนด้วยครับ
เบอร์โทรศัพท์, แพคเกจ, ชื่อ, วันที่มีผล
0811111111, 001, เกวลี, 1Jan10
0811111111, 001, เกวลิน, 1Feb10
0811111111, 002, เกวลิน, 1Mar10
0811111111, 002, เกวลัย, 1Apr10
โดยจะต้องแสดงเรคคอร์ดวันที่มีผลแรกของแต่ละเพคเกจ ผลลัพธ์คือ
0811111111, 001, เกวลี, 1Jan10
0811111111, 002, เกวลิน, 1Mar10
ขอรบกวนด้วยครับ
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R05069
โค้ดของอาจารย์สันติสุข ผมทดลองแล้ว พบว่าจะมีปัญหากับเคสที่พนักงานเปลี่ยนไปใช้แพคเกจอื่น แล้วเปลี่ยนกลับมาใช้แพคเกจเดิมครับ
Ex.
เบอร์โทรศัพท์, แพคเกจ, ชื่อ, วันที่มีผล
0811111111, 007, ชญาภา, 1-ม.ค.-10
0811111111, 008, ชญาภา, 1-ม.ค.-11
0811111111, 008, ชญาภี, 1-ม.ค.-12
0811111111, 007, ชญาภา, 1-ม.ค.-13
โค้ดอาจารย์สันติสุขจะแสดงผลลัพธ์เป็น
0811111111, 007, ชญาภา, 1-ม.ค.-10
0811111111, 008, ชญาภา, 1-ม.ค.-11
เท่านั้นครับ ซึ่งผลลัพธ์จริงๆจะต้องออก
0811111111, 007, ชญาภา, 1-ม.ค.-10
0811111111, 008, ชญาภา, 1-ม.ค.-11
0811111111, 007, ชญาภา, 1-ม.ค.-13
โดยผมก็พยายามฝึกเขียน SQL อยู่ แต่ยังหาทางไม่ได้เลย จึงต้องขอคำแนะนำด้วยครับ
Ex.
เบอร์โทรศัพท์, แพคเกจ, ชื่อ, วันที่มีผล
0811111111, 007, ชญาภา, 1-ม.ค.-10
0811111111, 008, ชญาภา, 1-ม.ค.-11
0811111111, 008, ชญาภี, 1-ม.ค.-12
0811111111, 007, ชญาภา, 1-ม.ค.-13
โค้ดอาจารย์สันติสุขจะแสดงผลลัพธ์เป็น
0811111111, 007, ชญาภา, 1-ม.ค.-10
0811111111, 008, ชญาภา, 1-ม.ค.-11
เท่านั้นครับ ซึ่งผลลัพธ์จริงๆจะต้องออก
0811111111, 007, ชญาภา, 1-ม.ค.-10
0811111111, 008, ชญาภา, 1-ม.ค.-11
0811111111, 007, ชญาภา, 1-ม.ค.-13
โดยผมก็พยายามฝึกเขียน SQL อยู่ แต่ยังหาทางไม่ได้เลย จึงต้องขอคำแนะนำด้วยครับ
3 @R05070
นี่คือเงื่อนไขที่คุณไม่ได้แจ้งมาแต่แรก เห็นไหมครับว่า ข้อกำหนดตกหล่นไปนิดเดียว โปรแกรมก็ไม่ได้ให้ผลตามที่ต้องการแล้ว .. ทำไมผมถึงพูดเรื่องนี้ก่อน ก็เพื่อให้เป็นประสบการณ์ของคุณได้เห็นชัดๆว่า การอธิบายรายละเอียดหรือ specification ของงานมีความสำคัญในกระบวนการทำโปรแกรมหน่ะครับ
กลับมาที่คิวรี่ต่อ ... เสียใจด้วยที่ต้องบอกว่า ผม ไม่คิดว่า จะสร้างคิวรี่ใน Access เพื่อให้คำตอบตามต้องการจากเงื่อนไขแบบนี้ได้ แต่ถ้าใช้การเขียนด้วยโปรแกรม VBA แทน ผมว่าน่าจะง่ายกว่ามาก
กลับมาที่คิวรี่ต่อ ... เสียใจด้วยที่ต้องบอกว่า ผม ไม่คิดว่า จะสร้างคิวรี่ใน Access เพื่อให้คำตอบตามต้องการจากเงื่อนไขแบบนี้ได้ แต่ถ้าใช้การเขียนด้วยโปรแกรม VBA แทน ผมว่าน่าจะง่ายกว่ามาก
4 @R05072
อ่อครับ ต้อง VBA เลยเหรอครับ
ผมเขียนเป็นแค่ SQL น่ะครับ งานเข้าอีกแล้ว
ขอขอบคุณอาจารย์สันติสุขมากครับ แล้วครั้งต่อไปผมจะเขียนข้อกำหนดให้ชัดเจนกว่านี้ ถือว่าเป็นประสบการณ์ครับ
ผมเขียนเป็นแค่ SQL น่ะครับ งานเข้าอีกแล้ว
ขอขอบคุณอาจารย์สันติสุขมากครับ แล้วครั้งต่อไปผมจะเขียนข้อกำหนดให้ชัดเจนกว่านี้ ถือว่าเป็นประสบการณ์ครับ
5 @R05073
เพิ่งคิดขึ้นได้ ลองดูคิวรี่นี้นะครับ ไม่แน่ใจว่าจะผิดพลาดตรงไหนหรือไม่ เพราะไม่ได้ทดสอบ แค่ลองเขียนสดๆในนี้ คิวรี่นี้จะให้ผลถูกต้อง ก็ต่อเมื่อ ไม่มีการเปลี่ยนแพคเกจภายในวันเดียวกัน นะครับ
select T1.* from เทเบิล as T1 where T1.แพคเกจ not in (select top 1 T2.แพคเกจ from เทเบิล as T2 where T2.เบอร์โทรศัพท์ = T1.เบอร์โทรศัพท์ and T2.วันที่มีผล < T1.วันที่มีผล order by T2.วันที่มีผล desc)
select T1.* from เทเบิล as T1 where T1.แพคเกจ not in (select top 1 T2.แพคเกจ from เทเบิล as T2 where T2.เบอร์โทรศัพท์ = T1.เบอร์โทรศัพท์ and T2.วันที่มีผล < T1.วันที่มีผล order by T2.วันที่มีผล desc)
6 @R05078
วิธีใหม่ของอาจารย์สันติสุข ผมนำไปประยุกต์ใช้แล้วสามารถได้ผลลัพธ์ตามที่ต้องการ
ขอขอบคุณอาจารย์สันติสุขมากครับ
ขอขอบคุณอาจารย์สันติสุขมากครับ
Time: 0.3339s
เรื่องการทำคิวรี่ คุณต้องไปฝึกเองเยอะๆ ไม่งั้นจะไม่เข้าใจ