Tue 29 Aug 2006 15:29:03
พี่ครับผมมีอีกเรื่องหนึ่งที่อยากถามหน่อยครับ
ผมมี feild ในฐานข้อมูลเก็บข้อมูลเกี่ยวกับทุนดังนี้
| รหัส | ชื่อ | ได้รับทุน | ปี | จำนวนปีที่ได้รับ |
| 1 | นายปปป | ต่อเนื่อง | 2548 | 4 |
| 2 | นายสสสสส | ประจำปี | 2547 | 1 |
| 2 | นายยยยย | ต่อเนื่อง | 2547 | 3 |
คำถามผมมีอยู่ว่าถ้าผมต้องการแสดงรายงานผู้ได้รับทุน เช่น ทุนต่อเนื่องในปี 2549 ก็จะแสดงรายชื่อผู้ได้รับทุนในปี 2549 ออกมาก็จะมี นายปปปป และนายยยยย ผมอยากทราบถึงวิธีการออกรายงานครับว่าสามารถนำปี+จำนวนปีที่ได้รับแล้วทำการค้นหาเพื่อออกรายงานได้ไหมครับ เช่น ค้นหาปี 2550 เวลาแสดงรายงานก็จะนำ ปี 25xx + จำนวนปีที่ได้รับทุน ถ้าอยู่ในช่วงระหว่างปีนั้นก็ออกรายงานคนนั้นเลยครับ
*************************************************
อยากให้พี่ยกตัวอย่างโค้ดในการเขียนให้ดูด้วยครับ..ขอบคุณอีกครั้งครับ
SELECT ..... FROM ..... WHERE field_name BETWEEN 2548, 2552
จากโค๊ดดังกล่าวจะได้ logic
if(field_name >= 2548 AND field_name < 2552)
หมายถึงว่าจะไม่ได้ข้อมูลในปี 2552 มาด้วย
ถ้าต้องการช่วง 2548 รวมถึงปี 2552 ด้วยนั้นต้องใช้
SELECT .... FROM .... WHERE field_name >= 2548 AND field_name <= 2552
ประมาณนี้ครับ
Wed 30 Aug 2006 08:50:33
ขอรบกวนอีกรอบครับ.จากคำตอบผมปีแค่ 2 field ที่ต้องใช้คือปีและจำนวนปีที่ได้รับ ผมต้องเพิ่มอีก field หนึ่งไหม่ครับคือ field ที่เก็บปีเมื่อนนำปีมาบวกกับจำนวนปีที่ได้รับหรือว่าไม่ต้องเพิ่มไปครับ..ถ้าเวลาเราจะค้นหาจะต้องเขียนโค้ดยังไงบ้างครับเพื่อที่จะตรวจสอบว่าอยู่ในช่วงระหว่างนี้ครับ
คุณสามารถนำมาบวกกันได้เลยครับ เช่น
SELECT ..... WHERE field_name >= 2548 AND field_name <= (2548 + field_name2)
โดย 2548 เป็นเลขใดๆที่รับเข้ามา สามารถสั่งทำการคำนวณในส่วนของ WHERE CLAUSE ก่อนเพื่อใช้ผลในการเปรียบเทรยบได้ครับ
Fri 1 Sep 2006 16:24:54
พี่ครับขอรบกวนอีกที่ครับ
ถ้าผมมี 2 field เป็นตัวเก็บปี ถ้าผมจะทำการหาค่าปีละหว่าง 2 field ได้ไหมครับหล่ะครับ
จาก SELECT ..... WHERE field_name >= 2548 AND field_name1 <= 2550
แบบนี้ได้ไหมครับ ลองให้พี่ช่วยดูให้หน่อยครับ
Sat 2 Sep 2006 17:54:09
พี่ลองยกตัวอย่างให้ผมหน่อยได้ไหมครับ
| รหัส | ชื่อ | ได้รับทุน | ปี | จำนวนปีที่ได้รับ |
| 1 | นายปปป | ต่อเนื่อง | 2548 | 4 |
| 2 | นายสสสสส | ประจำปี | 2547 | 1 |
| 2 | นายยยยย | ต่อเนื่อง | 2547 | 3 |
จากในนี้นะครับผมได้เพิ่ม field ไปอีกตัวหนึ่งคือทำให Query นะครับ เป็น Field ที่เกิดจาก ปี+จำนวนปีที่ได้รับ ตั้งให้ field นี้ชื่อว่า totalyear คือผมต้องการแสดงรายงานในช่วงระหว่าง ปีกับtotalyear ครับ เช่น ปี 2548+จำนวนปีที่ได้รับ field totalyearก็จะเป็น 2552 ถ้าออกรายงานโดยค้นหาจากปี พิมพ์ไปว่า 2550 ก็จะออกข้อมูลข้างต้นนั้นออกมาครับ
ตอนนี้ผมลองใส่ SELECT ..... WHERE ปี >= ค่าที่ค้นหา AND totalyear<= ค่าที่ค้นหา
ผมลัพท์ที่ออกมาบอกว่าค้นหาไม่พบ ผมจึงอยากให้พี่ลองแก้ไขให้หน่อยครับ
ขอบคุณมากๆ ครับสำหรับคำตอบที่ผ่านๆ มา
SELECT ..... WHERE ปี >= ค่าที่ค้นหา AND totalyear<= ค่าที่ค้นหา
ถ้าช่วงปีในฐานข้อมูลเป็น ปี=2548 และ totalyear=2552 ค่าที่ค้นหาเป็น 2550 จะได้เป็น
SELECT .... WHERE 2548>=2550 AND 2552<=2550 ซึ่งแน่นอนว่าไม่มีครับ
ที่ถูกควรจะเป็น
SELECT .... WHERE ปี <=2550 AND 2550<=totalyear
ถ้า query แล้วมีปัญหาให้ลองทดลองแทนค่าลงไปครับ เหมือนกับการแก้สมการในทางคณิตศาสตร์ครับ
Sun 3 Sep 2006 23:22:35
ขอบคุณพี่มากๆ ครับ

















