我有餐廳restaurant_time表。我需要顯示餐廳是開放還是關閉。PHP mysql mysql select case with case條件
這是我的查詢
$cur_nowtime = strtotime(date("H:i"));
$curDayOct = strtolower(date("D"));
SELECT rest.restaurant_id, rest.restaurant_name,
restime.".$curDayOct."_status AS res_curr_ocday_status,
IF(".$cur_nowtime." BETWEEN ".$curDayOct."_ot AND ".$curDayOct."_ct, 'Open','Closed') AS res_oct_status,
CASE WHEN res_curr_ocday_status = 'Open' THEN 'Open'
WHEN res_oct_status = 'Open' THEN 'Open'
ELSE 'Closed' END AS final_res_status
FROM restaurantAS rest
LEFT JOIN restaurant_time AS restime ON rest.restaurant_id = restime.res_id
我需要在「final_res_status」使用2個alies名「res_curr_ocday_status」和「res_oct_status」
領域的餐廳openclose狀態我需要顯示輸出如下所示。
restaurant_id restaurant_name res_curr_ocday_status res_oct_status final_res_status
1 aaa Open Closed Closed
2 bbbb Open Open Open
3 cccc Closed Closed Closed
4 dddd Closed Open Closed
請參閱我的查詢..
SELECT temp.*, (CASE WHEN temp.res_curr_ocday_status = 'Open' AND temp.res_curr_octime_status = 'Open' THEN 'Open'
ELSE 'Closed' END) AS res_oct_status FROM
(SELECT rest.restaurant_id, rest.restaurant_name,
restime.".$curDayOct."_status AS res_curr_ocday_status,
IF(".$cur_nowtime." BETWEEN ".$curDayOct."_ot AND ".$curDayOct."_ct, 'Open','Closed') AS res_curr_octime_status,
cty.cityname, zip.zipcode,
ROUND(((SUM(rvw.rating)/(COUNT(rvw.rating_id)*5))*100) ,1) AS avg_rating
FROM restaurant AS rest
LEFT JOIN restaurant_time AS restime ON rest.restaurant_id = restime.res_id
WHERE rest.restaurant_status = '1' GROUP BY rest.restaurant_id ORDER BY FIELD(res_oct_status, 'Open') DESC , FIELD(rest.restaurant_zip, '2600') DESC, RAND() LIMIT 0,10) AS temp
...我得到 「未知列 'res_oct_status' '以條款'」
我寧願分開查詢和表示邏輯。它將降低代碼的複雜性並使維護更容易。爲此,只需在php中使用'if conditions',而不是在SQL查詢中。 –
嘗試按字段排序(temp.res_oct_status,'Open')DESC –
同樣的錯誤來臨... – mikejohnvino