A-AA+then

การแจ้งเตือน

1,379
ต้องการแจ้งเตือน 2 สัปดาห์ ว่าต้องคืนหนังสือ
กี่เล่มโดยเอาไปเทียบกับวันที่ที่ได้กำหนดไว้
sql ใช้คำสั่งอะไรคะ


sql เขียนไว้ ไม่มีค่าอะไรออกมาเยย
ค่าในฐานมีวันที่ 25/02/2553 กับ  15/02/2553

SELECT test_Categorydevice.Cd_Name, test_Typedevice.Device_Name,
test_Maintanance.Ma_Expire, test_detail.div_name
FROM test_Categorydevice INNER JOIN
test_Typedevice INNER JOIN
test_Maintanance ON test_Typedevice.Device_ID = test_Maintanance.Device_ID AND
test_Typedevice.div_id = test_Maintanance.div_id INNER JOIN
test_detail ON test_Maintanance.div_id = test_detail.div_id ON
test_Categorydevice.div_id = test_Maintanance.div_id AND
test_Categorydevice.Cd_ID = test_Maintanance.Cd_ID
WHERE (test_Maintanance.Ma_Expire BETWEEN GETDATE() AND DATEADD(Week, - 2, test_Maintanance.Ma_Expire))

8 ความคิดเห็น

ขอเพิ่มเติมคะ การแจ้งเตือนล่วงหน้า 2 สัปดาห์
1

เอาไปทดสอบกับ phpmyadmin สิครับ ว่ามัน error ว่าอะไร ดูแบบนี้ รู้แค่ syntax ผิดหรือเปล่า
2

ต้องขอโทษด้วยนะคะพอดีใช้ sql 2000 ลองไปรันดูแล้วไม่ผิดหรอกคะแต่ค่าที่แสดงออกมามันผิด
3

อ่านะ ก็บอกว่า "ไม่มีค่าอะไรออกมาเยย"....

ถ้างั้น ก็ต้องตรวจสอบกับข้อมูลที่เก็บไว้ โครงสร้างฐานข้อมูล

ผมไม่แน่ใจว่า การใช้ INNER JOIN ในกรณีด้านบน จะถูกต้องหรือเปล่า คำแนะนนำที่ทำได้ง่ายๆ ก็คือ ให้ทดลองเขียน Query บน ตารางเดียวดูก่อน เพื่อตรวจสอบผลลัพท์ ก่อนจะทำการ JOIN ตาราง

4

SELECT     test_Expire
FROM        test_Maintanance
WHERE     (test_Expire BETWEEN GETDATE() AND DATEADD(week, 2, test_Expire))

จริงๆค่าที่ออกมันน่าจะเป็นอยุ่ระหว่างวันที่

5/2/2553 -14/2/2553


แต่ค่าเอามาแสดงหมดเยยคะ
28/2/2553
1/3/2553
8/4/2553

ยกเว้นค่าที่น้อยกว่า 5/2/2553
5

1. ลองเปลี่ยนมาใช้ > < แทน BETWEEN
2. ลองกำหนดค่าของวันที่ เป็นข้อความ แทนที่จะใช้ฟังก์ชั่น
3. ลองใช้ DATEADD(DAY, -14, test_Expire) แทน Week
6

ทำได้และคะแบบนี้จะได้ผลเหมือนกันหรือเปล่าคะ

SELECT     test.Cd_Name, test.Device_Name,
                      test.Ma_Expire, test.div_name, test.Ma_ID,
                      test.Ma_Note
FROM         test INNER JOIN
                      test INNER JOIN
                      test ON test.Device_ID = test.Device_ID AND
                      test.div_id = test.div_id INNER JOIN
                      test ON test.div_id = test.div_id ON
                      test.div_id = test.div_id AND
                      test.Cd_ID = test.Cd_ID
WHERE     (test.Ma_Expire BETWEEN GETDATE() AND GETDATE() + 14)
7

อยากรู้นะ ลอง ใช้คำสั่ง

SELECT GETDATE(), GETDATE() + 14 ดูว่าผลลัพท์ เป็นยังไง

ถ้าเป็น mysql ฟังก์ชั่นลักษณะประมาณนี้ผมก็ใช้บ่อย แต่ sql 2000 ผมไม่แน่ใจว่าต้องแปลงค่าก่อนหรือปล่า ใหลองทดลองใส่ช่วงเวลาที่เป็นตามกฏดู ถ้ามันทำงานได้ ก็ไม่มีปัญหาอะไรครับ
8
^