Постараюсь быть прямо в точку, что я пытаюсь сделать здесь ...MySQL: Условный оператор в запросе
У меня есть запрос, который работает, но недавно я обнаружил проблему с ним. Теперь я могу просто исправить это с помощью PHP, но я знаю, что это может быть сделано каким-то образом в MySQL ... Я просто не знаю, как это сделать. Так вот что происходит:
У меня есть таблица USERS и таблица УСЛУГ. Пользователь может иметь несколько сервисов (каждая служба полностью независима друг от друга), и каждая служба имеет поле «статус». Состояние определяет текущее состояние службы: active/inactive
Запрос вызывается, когда вы переходите на страницу «Управление пользователями», где каждый пользователь разбит на категорию, к которой он принадлежит. Для этого примера это будут: Активные пользователи | Деактивированные пользователи | Другие пользователи (пользователи без какого-либо плана обслуживания вообще).
Так что мой деактивируется пользователи запрос сводится к следующему:
SELECT DISTINCT u.* FROM users u LEFT JOIN services s ON s.assignedto=u.id WHERE s.status!=1
Оператор прекрасно работает, однако, если у клиента есть 2 планы услуг, где один активируется и один деактивирован, то он будет отображаться в деактивированный список, а также активированный список. Оператору требуется условие, при котором пользователь будет исключать пользователя из запроса, если они ТАКЖЕ имеют активированный план обслуживания. Сейчас у меня есть несколько пользователей, которые попадают в дезактивированных пользователей, которых там не должно быть.
В любом случае, спасибо заранее!
+1 для группы. –
Удивительный. Да, я думал об этом подходе первоначально, но полагаясь на поле, чтобы определить бездействие пользователя (я чувствую) в какой-то момент настраивается на неудачу. В любом случае, когда услуга деактивируется (неудачные платежи, ручная деактивация и т. Д.), Я должен отметить это поле для деактивации. Хотя этот SQL-запрос решает все :). Спасибо! – user0000001
@ Крис: долгосрочный, это лучший вариант для повышения производительности. Если вы хотите, чтобы он был отказоустойчивым, управляйте им с помощью триггера и добавьте отдельное поле в случае, если вам нужно вручную переопределить его. У вас не будет никаких шансов на ошибку, продолжая этот путь, и индекс в качестве бонуса. –