พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com | บล็อกอาหาร
ASP programming / เรื่องการค้นหาปี
aln
aln
Tue 29 Aug 2006 15:29:03

พี่ครับผมมีอีกเรื่องหนึ่งที่อยากถามหน่อยครับ

ผมมี feild ในฐานข้อมูลเก็บข้อมูลเกี่ยวกับทุนดังนี้

 รหัส ชื่อ  ได้รับทุน ปี   จำนวนปีที่ได้รับ
 1  นายปปป  ต่อเนื่อง 2548  4
 2  นายสสสสส  ประจำปี 2547  1
 2  นายยยยย  ต่อเนื่อง 2547  3

คำถามผมมีอยู่ว่าถ้าผมต้องการแสดงรายงานผู้ได้รับทุน เช่น ทุนต่อเนื่องในปี 2549 ก็จะแสดงรายชื่อผู้ได้รับทุนในปี 2549 ออกมาก็จะมี นายปปปป และนายยยยย ผมอยากทราบถึงวิธีการออกรายงานครับว่าสามารถนำปี+จำนวนปีที่ได้รับแล้วทำการค้นหาเพื่อออกรายงานได้ไหมครับ เช่น ค้นหาปี 2550 เวลาแสดงรายงานก็จะนำ ปี 25xx + จำนวนปีที่ได้รับทุน ถ้าอยู่ในช่วงระหว่างปีนั้นก็ออกรายงานคนนั้นเลยครับ

*************************************************

อยากให้พี่ยกตัวอย่างโค้ดในการเขียนให้ดูด้วยครับ..ขอบคุณอีกครั้งครับ

Administrator
Tue 29 Aug 2006 19:09:35
สามารถทำได้ครับ เช่น หาช่วงระหว่า 2548 - 2552
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

ประมาณนี้ครับ
aln
aln
Wed 30 Aug 2006 08:50:33

ขอรบกวนอีกรอบครับ.จากคำตอบผมปีแค่ 2 field ที่ต้องใช้คือปีและจำนวนปีที่ได้รับ ผมต้องเพิ่มอีก field หนึ่งไหม่ครับคือ field ที่เก็บปีเมื่อนนำปีมาบวกกับจำนวนปีที่ได้รับหรือว่าไม่ต้องเพิ่มไปครับ..ถ้าเวลาเราจะค้นหาจะต้องเขียนโค้ดยังไงบ้างครับเพื่อที่จะตรวจสอบว่าอยู่ในช่วงระหว่างนี้ครับ

Administrator
Wed 30 Aug 2006 10:19:16
อ่อ ลืมไปครับ
คุณสามารถนำมาบวกกันได้เลยครับ เช่น
SELECT ..... WHERE field_name >= 2548 AND field_name <= (2548 + field_name2)
โดย 2548 เป็นเลขใดๆที่รับเข้ามา สามารถสั่งทำการคำนวณในส่วนของ WHERE CLAUSE ก่อนเพื่อใช้ผลในการเปรียบเทรยบได้ครับ
aln
aln
Fri 1 Sep 2006 16:24:54

พี่ครับขอรบกวนอีกที่ครับ

ถ้าผมมี 2 field เป็นตัวเก็บปี ถ้าผมจะทำการหาค่าปีละหว่าง 2 field ได้ไหมครับหล่ะครับ

จาก SELECT ..... WHERE field_name >= 2548 AND field_name1 <= 2550

แบบนี้ได้ไหมครับ ลองให้พี่ช่วยดูให้หน่อยครับ

Administrator
Fri 1 Sep 2006 16:56:40
จะใช้แบบนี้ก็ได้ครับ ก็เหมือนเป็น WHERE CLUASE ทั่วไปครับ ถ้าใน field นั้นๆตรงกับ condition ที่ระบุไว้ก็จะได้ข้อมูลตามต้องการครับ
aln
aln
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<= ค่าที่ค้นหา

ผมลัพท์ที่ออกมาบอกว่าค้นหาไม่พบ ผมจึงอยากให้พี่ลองแก้ไขให้หน่อยครับ

ขอบคุณมากๆ ครับสำหรับคำตอบที่ผ่านๆ มา

Administrator
Sat 2 Sep 2006 18:21:05
ค่าที่ค้นหาต้องอยู่ระหว่างช่วงปีเริ่มต้นและช่วงปีท้ายสุดครับ
SELECT ..... WHERE ปี >= ค่าที่ค้นหา AND totalyear<= ค่าที่ค้นหา
ถ้าช่วงปีในฐานข้อมูลเป็น ปี=2548 และ totalyear=2552 ค่าที่ค้นหาเป็น 2550 จะได้เป็น
SELECT .... WHERE 2548>=2550 AND 2552<=2550 ซึ่งแน่นอนว่าไม่มีครับ
ที่ถูกควรจะเป็น
SELECT .... WHERE ปี <=2550 AND 2550<=totalyear

ถ้า query แล้วมีปัญหาให้ลองทดลองแทนค่าลงไปครับ เหมือนกับการแก้สมการในทางคณิตศาสตร์ครับ
aln
aln
Sun 3 Sep 2006 23:22:35

ขอบคุณพี่มากๆ ครับ

Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login