MySQL запрос на открытие и закрытие business_hour магазинов - PullRequest
0 голосов
/ 30 марта 2019

Я получаю открытые магазины, но когда я хочу напечатать закрытые магазины, запрос печатает открытые магазины как закрытые.Моя цель - сделать один и тот же запрос для печати открытых и закрытых магазинов, потому что теперь у меня есть два разных запроса.

Что мне трудно, так это то, что рестораны можно открывать два раза в день.Например, Ресторан, открыт с понедельника в 10:00 до вторника 03:00 и во вторник в 10:00 до среды 03:00.

Я пытался сделать запрос CASE WHEN, но проблема заключалась в том, что не удалось получить идентификатор ресторана с напечатанным статусом.,

Мой стол business_hour с двумя вставленными ресторанами. ПРИМЕЧАНИЕ restaurantID - это внешний ключ столика ресторана.

 id,restaurantID,openday,opentime,closeday,closetime
 1,15,Monday,10:00:00,Tuesday,03:00:00
 2,15,Tuesday,10:00:00,Wednesday,03:00:00
 3,24,Monday,10:00:00,Tuesday,03:00:00
 4,24,Tuesday,10:00:00,Wednesday,03:00:00
 5,24,Wednesday,10:00:00,Thursday,04:00:00
 6,24,Thursday,10:00:00,Friday,02:00:00
 7,24,Friday,10:00:00,Saturday,01:00:00
 8,24,Saturday,11:00:00,Sunday,01:00:00
 9,24,Sunday,11:00:00,Monday,02:00:00

Первый запрос, приведенный ниже, прекрасно распечатывает открытый ресторан.Как я могу получить закрытые рестораны?

запрос для проверки открытых ресторанов

        $stmt = $pdo->prepare("SELECT * FROM                         
                    business_hour 
                        INNER JOIN restaurant
                           ON business_hour.restaurantID = 
                            restaurant.id   
                    WHERE         
                     (closeday = '$today' AND closetime >= 
                      '$timeNow')  
                       OR
                     (openday = '$today' AND opentime <= 
                             '$timeNow')
                      ");  

        $stmt->execute();
        $i=0;
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            echo $row['ravintolaID'].' '.'OPEN'.'  '.$row['openday'].' '.$row['opentime'].' --'.$row['closeday'].' '.$row['closetime'].' '.'<br>';

            $i++;   

        }

Я пробовал этот запрос

запрос для проверки закрытых ресторанов

  $stmt = $pdo->prepare("SELECT * FROM business_hour 
    INNER JOIN restaurant
   ON business_hour.restaurantID = restaurant.id    
    WHERE         
      (closeday = '$today' AND closetime < '$timeNow')  
           OR
       (openday = '$today' AND opentime > '$timeNow')
     ");    
    $stmt->execute();
        $i=0;
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            echo $row['ravintolaID'].' '.'CLOSED'.' open at '.$row['openday'].' '.$row['opentime'].' --  '.$row['closeday'].' '.$row['closetime'].' '.'<br>';

            $i++;   

        }

Я ожидаю, что результаты покажут мне только один раз закрытые и открытые рестораны.

Текущий день Понедельник и Время 7 утра

ВЫХОД

  24 OPEN Sunday 10:00:00 --Monday 08:00:00 
  15 CLOSED open at Monday 10:00:00 -- Tuesday 03:00:00 
  15 CLOSED open at Sunday 10:00:00 -- Monday 03:00:00 
  24 CLOSED open at Monday 10:00:00 -- Tuesday 03:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...