Я пытаюсь записать запрос, который возвращает тот же результат трех различных событий, но я думаю, что делаю его неправильно. Я могу выполнить свой запрос против одного идентификатора события, и он работает. Как я могу выбрать все три? Вот то, что я имею до сих пор:
SELECT * FROM `Registrations`
WHERE `Role` = "Attendee" AND `RegistrationStatus_ID` = "1" AND `DigSignature` IS NULL
AND `Event_ID` = "147" OR `Event_ID` = "155" OR `Event_ID` = "160"
SELECT *
FROM `Registrations`
WHERE `Role` = "Attendee"
AND `RegistrationStatus_ID` = "1"
AND `DigSignature` IS NULL
AND `Event_ID` in ("147", "155", "160")
SELECT * FROM `Registrations`
WHERE `Role` = "Attendee" AND `RegistrationStatus_ID` = "1" AND `DigSignature` IS NULL
AND (`Event_ID` = "147" OR `Event_ID` = "155" OR `Event_ID` = "160")
Когда вы смешиваете И и ИЛИ, полезно использовать скобки, чтобы сгруппировать вещи вместе. Даже когда в этом нет необходимости для логики, иногда полезно понять ваши намерения.
И
и ИЛИ
имеют одинаковый приоритет .
SELECT * FROM `Registrations`
WHERE `Role` = "Attendee" AND `RegistrationStatus_ID` = "1" AND `DigSignature` IS NULL
AND (`Event_ID` = "147" OR `Event_ID` = "155" OR `Event_ID` = "160")
Вы должны заключать операторы OR в круглые скобки:
SELECT * FROM `Registrations`
WHERE `Role` = "Attendee" AND `RegistrationStatus_ID` = "1" AND `DigSignature` IS NULL
AND (`Event_ID` = "147" OR `Event_ID` = "155" OR `Event_ID` = "160")