กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
492 1
URL.หัวข้อ /
URL
โจทย์ลับสมองฝึก SQL กันหน่อยนะครับ ;-)
สมมุติว่าผมมีตารางเก็บข้อมูล web board ตามนี้นะครับ
(MessageID เป็น AutoNumber, นอกนั้นเป็น Text หมด)
MessageID, Msg_ForumCode, Msg_Title, Msg_PostBy
=====================================
1, "ACCESS", "question 1", "cookie"
2, "VB", "question 2", "ada"
3, "M.1", "RE: question 1", "enfant"
4, "M.2", "RE: question 2", "gate"
5, "VB", "question 3", "ada"
6, "M.3", "RE: RE: question 1", "poo"
อธิบาย Table Design:
=======================
ผม design ตารางอย่างนี้ล่ะ
MessageID เลขที่ข้อความ เป็นAutoNumber
Msg_ForumCode รหัสฟอรัม
เป็น Text ถ้าเป็นข้อความโพสต์ใหม่ในฟอรัมให้ใส่รหัสฟอรัม
แต่ถ้าเป็นข้อความตอบ ให้ใส่ในรูปแบบ M.n โดยที่ n เป็น
เลขที่ข้อความที่ตอบ
Msg_Title ชื่อเรื่อง เป็น Text ในกรณีที่เป็นข้อความตอบ
ผู้ส่งไม่ต้องระบุชื่อเรื่อง โดยโปรแกรมใส่ชื่อเรื่องให้อัตโนมัติ
ในรูปแบบ RE: sss โดยที่ sss เป็นชื่อเรื่องของข้อความที่ตอบ
Msg_PostBy ชื่อผู้ตอบ เป็น Text
โจทย์:
========
ถ้าต้องการผลลัพธ์เป็นข้อความล่าสุดสัก 5 ข้อความในฟอรัมที่ระบุ
จะต้องเขียน SQL statement สำหรับ Access หรือ SQL Server อย่างไร?
ตัวอย่างผลลัพธ์
================
ตัวอย่างผลลัพธ์ที่ต้องการถ้ากำหนดฟอรัมเป็น 'ACCESS':
MessageID, Msg_ForumCode, Msg_Title, Msg_PostBy
================================================
6, "M.3", "RE: RE: question 1", "poo"
3, "M.1", "RE: question 1", "enfant"
1, "ACCESS", "question 1", "cookie"
ถ้าระบุเป็นฟอรัม 'VB' ตัวอย่างผลลัพธ์น่าจะต้องได้อย่างนี้
MessageID, Msg_ForumCode, Msg_Title, Msg_PostBy
================================================
5, "VB", "question 3", "ada"
4, "M.2", "RE: question 2", "gate"
2, "VB", "question 2", "ada"
ลองดูนะครับเพื่อนๆ อย่าหาว่าผมขี้เกียจคิดเลย อิอิ.
(MessageID เป็น AutoNumber, นอกนั้นเป็น Text หมด)
MessageID, Msg_ForumCode, Msg_Title, Msg_PostBy
=====================================
1, "ACCESS", "question 1", "cookie"
2, "VB", "question 2", "ada"
3, "M.1", "RE: question 1", "enfant"
4, "M.2", "RE: question 2", "gate"
5, "VB", "question 3", "ada"
6, "M.3", "RE: RE: question 1", "poo"
อธิบาย Table Design:
=======================
ผม design ตารางอย่างนี้ล่ะ
MessageID เลขที่ข้อความ เป็นAutoNumber
Msg_ForumCode รหัสฟอรัม
เป็น Text ถ้าเป็นข้อความโพสต์ใหม่ในฟอรัมให้ใส่รหัสฟอรัม
แต่ถ้าเป็นข้อความตอบ ให้ใส่ในรูปแบบ M.n โดยที่ n เป็น
เลขที่ข้อความที่ตอบ
Msg_Title ชื่อเรื่อง เป็น Text ในกรณีที่เป็นข้อความตอบ
ผู้ส่งไม่ต้องระบุชื่อเรื่อง โดยโปรแกรมใส่ชื่อเรื่องให้อัตโนมัติ
ในรูปแบบ RE: sss โดยที่ sss เป็นชื่อเรื่องของข้อความที่ตอบ
Msg_PostBy ชื่อผู้ตอบ เป็น Text
โจทย์:
========
ถ้าต้องการผลลัพธ์เป็นข้อความล่าสุดสัก 5 ข้อความในฟอรัมที่ระบุ
จะต้องเขียน SQL statement สำหรับ Access หรือ SQL Server อย่างไร?
ตัวอย่างผลลัพธ์
================
ตัวอย่างผลลัพธ์ที่ต้องการถ้ากำหนดฟอรัมเป็น 'ACCESS':
MessageID, Msg_ForumCode, Msg_Title, Msg_PostBy
================================================
6, "M.3", "RE: RE: question 1", "poo"
3, "M.1", "RE: question 1", "enfant"
1, "ACCESS", "question 1", "cookie"
ถ้าระบุเป็นฟอรัม 'VB' ตัวอย่างผลลัพธ์น่าจะต้องได้อย่างนี้
MessageID, Msg_ForumCode, Msg_Title, Msg_PostBy
================================================
5, "VB", "question 3", "ada"
4, "M.2", "RE: question 2", "gate"
2, "VB", "question 2", "ada"
ลองดูนะครับเพื่อนๆ อย่าหาว่าผมขี้เกียจคิดเลย อิอิ.
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R06916
Time: 0.1067s