我有两张桌子
-
表学校
school_open_time|school_close_time|school_day
8:00 AM | 9:00PM | Monday
10:00 AM | 7:00PM | Wednesday
-
表学院
college_open_time|college_close_time|college_day
10:00 AM | 8:00PM | Monday
10:00 AM | 9:00PM | Tuesday
10:00 AM | 5:00PM | Wednesday
现在我想选择
school_open_time
school_close time
,
college_open_time
和
college_close_time
根据今天(意思是
college_day=school_day=today
,如果某个表中没有特定日期的行,则显示空白字段。(
LEFT JOIN
,我想我可以用)。
请为此向我建议最佳和优化的查询。
更新:
如果学校没有开放时间和关闭时间,那么大学开放时间和大学关闭时间必须作为学校开放时间和学校关闭时间返回(不填写数据库,只返回)。一定要有一天的大学开放时间和大学关闭时间
我使用下面的查询
SELECT college_open_time,college_close_time ,school_open_time,
school_close_time FROM tbl_college
LEFT JOIN tbl_school ON school_owner_id=college_owner_id
WHERE college_owner_id='".$_session['user_id']."' AND
college_day='".date('l',time())."'";
当表中没有某一天的行时,返回单行(左手有一些值,右手有空白值),但在左手边显示七行相同值(大学开放时间、大学关闭时间),在右手边显示六行相同值(学校开放时间和学校关闭时间)。
i need only one row when both table have a row of a given day
但是使用上面的查询只取对应表的第一行“学校”,其中“学校所有者”ID为50(let),它看不到“学校日名称”应为“天”的条件。
更多更新@37stars
还有一点问题,亲爱的,
学校关闭时间和学校开放时间的数据类型为
TIME
类型
而大学开放时间和大学关闭时间的数据类型是
VARCHAR
类型。
我使用了你给出的下面的代码,但我做了一些修改,我接近了结果。
但是现在告诉我在下面的代码段中我必须在哪里写ifnull
ifnull(time_format())或time_format(ifnull())
SELECT TC.owner_id,college_open_time AS collegeOpen,
college_close_time AS collegeClose,
TIME_FORMAT(school_open_time, '%h:%i %p' ) AS schoolOpen,
TIME_FORMAT(school_close_time, '%h:%i %p' ) AS schoolClose
FROM tbl_college TC
LEFT JOIN tbl_school TS ON TS.owner_id = TC.owner_id
AND TC.college_day = TS.school_day
WHERE college_day = DATE_FORMAT(NOW(),'%W')
解决方案
感谢37颗星,你的和蔼可亲,谢谢你的伊夫鲁姆之意,
我在写最佳和最佳的查询
SELECT TC.owner_id,college_open_time AS collegeOpen,college_close_time AS
collegeClose, IFNULL(TIME_FORMAT(school_open_time, '%h:%i %p'),college_open_time)
AS schoolOpen,IFNULL(TIME_FORMAT(school_close_time, '%h:%i %p',college_close_time)
AS schoolClose FROM tbl_college TC LEFT JOIN tbl_school TS
ON TS.owner_id = TC.owner_id AND TC.college_day = TS.school_day
WHERE college_day = DATE_FORMAT(NOW(),'%W')
FROM tbl_storecalendar TS LEFT JOIN tbl_delivery_hours TD
ON TD.store_id = TS.store_id
AND TD.del_day = TS.dayName WHERE dayName = DATE_FORMAT( NOW( ) , '%W' )