2015-11-06 15 views
1
SELECT `user_appoint`.`ApptDateTime` AS ApptDate,`user_appoint`.`id` AS appt_id,  `user_appoint`.`ref_no` AS ref_no, `user_appoint`.`status_id` AS status_id, `user_det`.`pass_no`, `user_det`.`f_name` AS fname, `user_appoint`.`date`, `user_det`.`l_name` AS lname, `user_det`.`dob` AS dob, `tbl_pi`.`Pi`, `tbl_vesselmaster`.`id` AS Vid, `user_det`.`id` AS user_id, `user_appoint`.`dr_comments` AS Remarks 
FROM (`user_det`) 
JOIN `user_appoint` ON `user_appoint`.`u_id` = `user_det`.`id` 
LEFT JOIN `tbl_pi` ON `user_appoint`.`id` = `tbl_pi`.`ApptId` 
JOIN `tbl_rank` ON `user_appoint`.`rank` = `tbl_rank`.`rank_id` 
JOIN `tbl_typeofmedical` ON `tbl_typeofmedical`.`Id`=`user_appoint`.`purpose` 
JOIN `tbl_vesselmaster` ON `tbl_vesselmaster`.`id` = `user_appoint`.`vessel` 
JOIN `tbl_clinic_list` ON `tbl_clinic_list`.`Id` = `user_appoint`.`ClinicId` 
JOIN `pate_status` ON `pate_status`.`id`=`user_appoint`.`status_id` 
LEFT JOIN `tbl_doctorlist` ON `tbl_doctorlist`.`id`=`user_appoint`.`DrId` 
LEFT JOIN `tbl_fleetvessel` ON `tbl_fleetvessel`.`VesselId` = `user_appoint`.`vessel` 
WHERE `user_appoint`.`void` = 0 
AND `user_appoint`.`comp_id` = '123' 
AND `user_det`.`3cc_id` LIKE '%%' 
AND `user_appoint`.`ref_no` LIKE '%%' 
AND `user_appoint`.`DrId` LIKE '%%' 
AND `tbl_fleetvessel`.`FleetId` LIKE '%%' 
AND `ApptDateTime` LIKE '%%' 
ORDER BY `user_appoint`.`ApptDateTime` DESC 
LIMIT 15 

這是更改爲MyQuery其返回結果如下Mysql的回報今天的結果導致

ApptDate      f_name  l_name 
--------------    -------  ------- 
13-11-2015     xyz   pqr 
06-11-2015     abc   uio 
04-11-2015     qwe   jkl 

我希望表顯示在頂部今天的成績,然後未來的結果,然後將結果的其餘部分。

回答

2

您查詢的WHERE子句只是更改順序:

ORDER BY DATE_FORMAT(`user_appoint`.`ApptDateTime`, '%d-%m-%Y') = DATE_FORMAT(NOW(), '%d-%m-%Y') DESC, `user_appoint`.`ApptDateTime` > NOW() DESC, `user_appoint`.`ApptDateTime` DESC 

這樣的第一個結果是一個在今天日期匹配,下一個結果是那些日期是大於今天(=在未來),其餘則按降序排列。

+0

它仍然顯示我以相同的順序。 –

+0

ApptDateTime是什麼類型的字段?日期或日期時間?名稱建議日期時間,但輸出建議日期 –

+0

其日期時間字段。我使用PHP,所以我改變了視圖方面的日期格式。它存儲在這種格式'2015-11-11 09:45:00'在數據庫中 –

0

只須用你的條件,你的訂單使用情況下可通過:

ORDER BY 
    CASE 
    WHEN DATE(user_appoint.ApptDateTime) = CURDATE() THEN 1 
    WHEN DATE(user_appoint.ApptDateTime) > CURDATE() THEN 2 
    ELSE 3 
    END 
+0

只是爲了改善自己,不會調用一個變種的CURDATE,然後比較這是更有效(更快)?...另外,你有一個錯誤的函數,它應該'CURDATE()' – Bonatti

+0

@Bonatti :謝謝,我糾正了錯別字。不,在日期中使用變量不會更快。無論如何,CURDATE只會被調用一次。 –