ต้องการแจ้งเตือน 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))
กี่เล่มโดยเอาไปเทียบกับวันที่ที่ได้กำหนดไว้
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))
ขอเพิ่มเติมคะ การแจ้งเตือนล่วงหน้า 2 สัปดาห์
เอาไปทดสอบกับ phpmyadmin สิครับ ว่ามัน error ว่าอะไร ดูแบบนี้ รู้แค่ syntax ผิดหรือเปล่า
ต้องขอโทษด้วยนะคะพอดีใช้ sql 2000 ลองไปรันดูแล้วไม่ผิดหรอกคะแต่ค่าที่แสดงออกมามันผิด
อ่านะ ก็บอกว่า "ไม่มีค่าอะไรออกมาเยย"....
ถ้างั้น ก็ต้องตรวจสอบกับข้อมูลที่เก็บไว้ โครงสร้างฐานข้อมูล
ผมไม่แน่ใจว่า การใช้ INNER JOIN ในกรณีด้านบน จะถูกต้องหรือเปล่า คำแนะนนำที่ทำได้ง่ายๆ ก็คือ ให้ทดลองเขียน Query บน ตารางเดียวดูก่อน เพื่อตรวจสอบผลลัพท์ ก่อนจะทำการ JOIN ตาราง
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
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
1. ลองเปลี่ยนมาใช้ > < แทน BETWEEN
2. ลองกำหนดค่าของวันที่ เป็นข้อความ แทนที่จะใช้ฟังก์ชั่น
3. ลองใช้ DATEADD(DAY, -14, test_Expire) แทน Week
2. ลองกำหนดค่าของวันที่ เป็นข้อความ แทนที่จะใช้ฟังก์ชั่น
3. ลองใช้ DATEADD(DAY, -14, test_Expire) แทน Week
ทำได้และคะแบบนี้จะได้ผลเหมือนกันหรือเปล่าคะ
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)
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)
อยากรู้นะ ลอง ใช้คำสั่ง
SELECT GETDATE(), GETDATE() + 14 ดูว่าผลลัพท์ เป็นยังไง
ถ้าเป็น mysql ฟังก์ชั่นลักษณะประมาณนี้ผมก็ใช้บ่อย แต่ sql 2000 ผมไม่แน่ใจว่าต้องแปลงค่าก่อนหรือปล่า ใหลองทดลองใส่ช่วงเวลาที่เป็นตามกฏดู ถ้ามันทำงานได้ ก็ไม่มีปัญหาอะไรครับ
SELECT GETDATE(), GETDATE() + 14 ดูว่าผลลัพท์ เป็นยังไง
ถ้าเป็น mysql ฟังก์ชั่นลักษณะประมาณนี้ผมก็ใช้บ่อย แต่ sql 2000 ผมไม่แน่ใจว่าต้องแปลงค่าก่อนหรือปล่า ใหลองทดลองใส่ช่วงเวลาที่เป็นตามกฏดู ถ้ามันทำงานได้ ก็ไม่มีปัญหาอะไรครับ