Py学习  »  DATABASE

如何将两个表字段名与MySQL中的另一个值进行比较?

diEcho • 6 年前 • 1452 次点击  

我有两张桌子

  1. 表学校

    school_open_time|school_close_time|school_day
    8:00 AM         | 9:00PM          | Monday
    10:00 AM        | 7:00PM          | Wednesday
    
  2. 表学院

     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' )
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30351
文章 [ 4 ]  |  最新文章 6 年前