尝试查找在酒吧营业时间内发生的账单-MySQL

时间:2018-10-28 19:21:06

标签: mysql sql

我试图找到在酒吧营业时间内发生的所有账单。示例:

|bills table           |      |bars table                 |
|billID |time  |name   |      |barName | barOpHr | barClHr|
|1      |22:00 |bar1   |      |bar1    | 20:00   | 03:00  |
|2      |15:00 |bar2   |      |bar2    | 19:00   | 02:00  |
|3      |23:35 |bar3   |      |bar3    | 22:00   | 03:00  |

试图实现:

|bills table           |      
|billID |time  |name   |      
|1      |22:00 |bar1   |          
|3      |23:35 |bar3   |

我的代码如下:

select distinct b.billID from bills as b
inner join bars as s where s.name = b.bar 
and time_to_sec(time(b.time)) - time_to_sec(time(s.closing)) > '0'
and time_to_sec(time(b.time)) - time_to_sec(time(s.opening)) > '0'

它没有返回正确的行数,有人可以告诉我我的错误是什么吗?谢谢。

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

select distinct b.billID, b.time, b.name
from bills as b inner join bars as s on s.name = b.barName 
where (
    time_to_sec(time(b.time)) - time_to_sec(time(s.barOpHr)) > '0'
    and time_to_sec(time(b.time)) - time_to_sec(time(s.barClHr)) > '0'
)

请考虑使用JOIN。另外,建议您在ID表中使用bars作为主键,而不要使用名称。