ต้องการจะทำแจ้งเตือนแบบเอาข้อมูลที่ต้องการแจ้งมาไว้บนสุดของการ์ดโชว์ตาราง
ถ้าผมทำก็น่าจะใช้ ORDER BY เหมือนกันครับ
Date :
2018-05-28 11:03:30
By :
nPointXer
order ไม่ได้ครับ
ส่วนเรื่องที่ใช้ค่า DiffDate ผมเห็นด้วยครับ แต่ผมไม่รู้วิธีเก็บค่า Diffdate ไว้ในฐานข้อมูล ผมเลยไม่สามารถเรียงจากค่า Diffdate ได้
Date :
2018-05-28 11:09:22
By :
yutthanagorn
แบบนี้ครับ
Date :
2018-05-28 12:06:03
By :
yutthanagorn
ผมยังไม่ได้ลอง พอดีเล่นในมือถือ แต่น่าจะประมาณนี้ครับ ลองใช้ดูครับว่าได้ตามที่ต้องการหรือเปล่า ส่วนเรื่องสี ใช้ php จัดการเอานะ ได้ผลอย่างไรถ่ายรูปมาให้ดูด้วยครับ เดี๋ยวจะช่วยดูให้
Code (SQL)
SELECT *
FROM `data`
ORDER BY CASE WHEN DATEDIFF(CURDATE(), `datestart`) > 15 AND status = 'n' THEN 0 ELSE 1 END ASC, id ASC
Date :
2018-05-29 00:18:14
By :
nPointXer
ถ้า order by ( จัดเรียงตามสูตรคำนวณ) เข้าใจยาก ก็ลองใช้ subquery ก่อนแล้วค่อยจัดเรียง
Code (SQL)
select * from (
select a, b, (a+b) as x from tablename
) as tmp order by x
Date :
2018-05-29 20:22:57
By :
Chaidhanan
ผมลองใช้
Code (SQL)
SELECT *
FROM `data`
ORDER BY CASE WHEN DATEDIFF(CURDATE(),`datestart`) > 15 AND `status` = 'n' THEN 0 ELSE 1 END ASC, id ASC
ผลที่ออกมา
สงสัยคือทำไม ID 5 ไม่ถูกจัดเรียงไว้ข้างบนในเมื่อมันก็ status = n แล้ววันที่ก็เกิน 15 วัน
Date :
2018-05-30 08:49:50
By :
yutthanagorn
id ASC เรียง จากน้อยไปมาก
id DESC เรียงจากมากไปน้อย
อันนี้ภาษา sql เบสิกมากๆเลยนะ ไม่รู้ว่าได้ศึกษามาบ้างหรือป่าว
Date :
2018-05-30 09:00:29
By :
Pong Thep
ลองเขียนแบบนี้ดู จะได้ตรวจสอบ condition ถูกต้องไหม
Code (SQL)
SELECT *
, DATEDIFF(CURDATE(),`datestart`) dd
, (DATEDIFF(CURDATE(),`datestart`) > 15 AND `status` = 'n') as test
FROM `data`
ORDER BY (DATEDIFF(CURDATE(),`datestart`) > 15 AND `status` = 'n') DESC, id ASC
Date :
2018-05-30 09:06:23
By :
Chaidhanan
ได้แล้วครับ ขอบพระคุณ คุณ Kaspersky กับ คุณ Chaidhanan มากๆครับ
Code (SQL)
SELECT *
FROM `data`
ORDER BY CASE WHEN DATEDIFF(CURDATE(), `datestart`) > 15 AND status = 'n' THEN 0 ELSE 1 END ASC, id ASC
Date :
2018-05-30 09:31:14
By :
yutthanagorn
Load balance : Server 01