 |
ต้องการจะทำแจ้งเตือนแบบเอาข้อมูลที่ต้องการแจ้งมาไว้บนสุดของการ์ดโชว์ตาราง |
|
 |
|
|
 |
 |
|
ถ้าผมทำก็น่าจะใช้ 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 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|