สอบถามเกี่ยวกับการ คิวรีใน Access 2003
กระทู้เก่าบอร์ด อ.Yeadram

 1,655   3
URL.หัวข้อ / URL
สอบถามเกี่ยวกับการ คิวรีใน Access 2003

รบกวนผู้รู้หน่อยนาา ขอบคุณค่ะ
          No ID   Name   ITEM   Point
          1     190 นาย สม   คะแนน1   66
          2     190 นาย สม   คะแนน2   50
          3     190 นาย สม   คะแนน3   70
          4     190 นาย สม   คะแนน4   90
          5     199 นาย ดี     คะแนน1   42
          6     199 นาย ดี     คะแนน2   54
          7     199 นาย ดี     คะแนน3   80
          8     199 นาย ดี     คะแนน4   39
          9     199 นาย ดี     คะแนน5   50

รบกวนดูให้หน่อยนะค่ะ ถ้าต้องการคิวรีใน Access 2003 ดึง ข้อมูลรายละเอียดของแต่ละบุคคล โดยมีเงื่อนไขว่า

ให้ดึงข้อมูลรายละเอียดต่างๆของทุกคนขึ้นมาโชว์ โดยเลือกเฉพาะคะแนน 3 คะแนนที่มีค่ามากสุดของแต่ละคนเท่านั้น

ซึ่งใน DB บางคนอาจมีคะแนนถึง 6 รายาการแบบนี้จะต้องวนลูปอย่างไรค่ะ รบกวนผู้รู้ช่วยตอบให้หน่อยนะค่ะ

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

1 @R06954
ไม่ทราบว่าจะนำไปใช้ในรูปแบบไหน จึงลองเขียน query ขึ้นมาก่อน

SELECT TOP [3,] SCORE.ID, SCORE.NAME, SCORE.ITEM, SCORE.POINT
FROM SCORE
WHERE (((SCORE.ID)=[ค่าที่ส่งเข้ามา]))
GROUP BY SCORE.ID, SCORE.NAME, SCORE.ITEM, SCORE.POINT
ORDER BY SCORE.POINT DESC;

ถ้าเขียน vba ก็ส่งค่า คนที่ต้องการหา (id) ตรง where clause จะได้คะแนน สูงสุด 3 คะแนนแรก ของ id นั้น นำไปแสดงหรือ นำไปใช้ต่อไป
ไม่ทราบตรงตามที่ต้องการหรือไม่ อย่างไร
2 @R06955
ขอบคุณค่ะสำหรับคำแนะนำ ได้ทำตามแล้วค่ะ
แต่ ถ้าใส่ว่า SELECT TOP [3,] SCORE.ID, SCORE.NAME, SCORE.ITEM, SCORE.POINT
ในส่วนของ TOP [3,] จะ Error โปรแกรมยอมแค่ให้ใส่ TOP 3 เท่านั้นอ่ะค่ะ
และถ้าใช้แค่ TOP 3 เฉยๆ ผลลัพธ์จะได้ คะแนนสูงสุด 3 อันดับจากทั้งหมดไม่ใช่รายบุคคลอ่ะค่ะ

ที่ต้องการ คือ ผลลัพธ์แบบนี้อะค่ะ

        No     ID   Name      ITEM     Point
          4     190 นาย สม   คะแนน4   90
          3     190 นาย สม   คะแนน3   70
          1     190 นาย สม   คะแนน1   66
          7     199 นาย ดี     คะแนน3   80
          6     199 นาย ดี     คะแนน2   54
          9     199 นาย ดี     คะแนน5   50

นอกจาก Top 3 อันดับของแต่ละบุคคลแล้วยังต้องโชว์ ทุกID ทั้งหมดที่มี
คือไม่ระบุ ID ใดใดนั่นเองอะค่ะ

รบกวนหน่อยนะค่ะ ไม่เป็นจริงๆ แหะๆ
3 @R06956
จากคำถาม
"ซึ่งใน DB บางคนอาจมีคะแนนถึง 6 รายาการแบบนี้จะต้องวนลูปอย่างไรค่ะ "

แสดงว่าจะต้องรู้เรื่องการวนลูปบ้าง
นั่นคือ การเขียน vba เป็น
คุณก็เปิด recordset ของ รายชื่อคนทั้งหมด (ตารางที่เก็บรายชื่อคน)
แล้วส่งรหัส id มาที่ sql statement ที่ผมระบุไว้ ตรง where clause
คุณจะได้ recordset ของ รายชื่อนั้น แล้วจะนำไปทำอะไรต่อ หรือจะเก็บเข้า ตารางอีกตาราง หรือ จะนำไปเข้า ฟอร์ม หรือ ... แล้วแต่คุณมือใหม่ จะประยุกต์ใช้ครับ
แล้วมันจะ วนลูปไปจนจบตาราง รายชื่อคน ไม่ทราบว่าพอทำได้หรือไม่ หรือตรงคำถามหรือเปล่า

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