Я получаю int от 1 до 7 для дня недели, и мне нужно сравнить его с 7 столбцами дня недели? - PullRequest
0 голосов
/ 06 марта 2020

Я пишу функцию, в которой одним из параметров является INT и день недели текущего дня. Если день воскресенье, это будет 1, а понедельник будет 2, и т. Д. c.

Внутри моей базы данных есть таблица для каждого элемента в листе заказа. У них много столбцов, и 7 из них - это воскресенье, понедельник, вторник и т. Д. c. Они имеют логическое значение, если предмет можно купить в данный день.

Так что мне нужно взять INT или 1 или что-то еще и выяснить, какой это день недели. Затем сравните его с столбцом isSunday или любым другим, чтобы увидеть, является ли значение истинным. Если это так, он вернет всю строку для этого элемента. Если значение равно 0 для данного дня, он не вернет этот элемент.

PS Еще один параметр, который я получаю, это время суток. Это определяет, находится ли время между временем начала и окончания, потому что некоторые предметы продаются только утром, например, на завтрак.

Я думал, что вместо того, чтобы получать 2 разных параметра для дня недели INT и времени дня TIME, я просто получил одно большое значение календаря, в котором были дата и время. А затем разбить его, чтобы сравнить его с колонками, но я не знаю, если это делает его слишком сложным.

это схема

getLocationLiveMenu(p_locationID: Int!, p_timeofday: time, p_dayofweek: int): [LocationMenu]

[LocationMenu]

она будет храниться здесь. массив в массиве.

type LocationMenu {
    locationID: Int
    menucategoryID: Int
    name: String
    menuItems: [LocationMenuItem]
}

type LocationMenuItem {
    locationMenuItemID: Int
    locationID: Int
    name: String
    description: String
    price: Float
    photo: String
}

этот livemenuget должен быть одной функцией. 2 раздельные недопустимы

это вызов хранимой процедуры на сервере sql, которую я также должен создать

SELECT  s.startTime, s.endTime, s.description, s.locationID, s.onSunday, s.onMonday, s.onTuesday, s.onWednesday, s.onThursday, s.onFriday, s.onSaturday, l.locationMenuItemID, l.menuCategoryID, l.name, l.description, l.price, l.photo, l.isAllDay, l.scheduleID
  FROM company.menuschedules s left join company.locationmenuitem l on l.locationID = s.locationID where p_locationID = l.locationID and p_currentTime BETWEEN s.startTime AND s.endTime 
  and if(
        p_weekday = 1
        then check isMonday
        or if p_weekday = 2
        then check isTuesday
        ...
        ...

        )

       if booleanvalue = true then return locationmenuitem
;

1 Ответ

0 голосов
/ 06 марта 2020

Вместо столбца для каждого дня недели рассмотрите:

a) сохранение побитового значения для рабочих дней, где 1 = воскресенье, 2 = понедельник, 4 = вторник и 128 = каждый день .

или

b) сохранение дней недели в отдельной таблице с отдельной строкой для каждого местоположения / дня недели.

...