Попытка найти счета, которые произошли в часы работы бара - Mysql - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь найти все счета, которые произошли в часы работы бара. Пример:

|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 голосов
/ 28 октября 2018

Попробуйте ниже:

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 вместо имени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...