Результат не отфильтрован - PullRequest
0 голосов
/ 09 октября 2019

Попытка подсчитать количество отмененных поездок после фильтрации запрещенных пользователей (Клиент + Драйвер), однако, похоже, что мое предложение where не работает

Таблица поездок Trips Table

Таблица пользователей

Users Table

SELECT COUNT(*)
FROM Trips
WHERE Status = 'cancelled_by_driver' OR Status = 'cancelled_by_client'
AND Client_Id NOT IN (SELECT Users_Id
                      FROM Users
                      WHERE Users.Banned = 'Yes')
AND Driver_Id NOT IN (SELECT Users_Id
                      FROM Users
                      WHERE Users.Banned = 'Yes')
GROUP BY Request_at

Ответы [ 2 ]

2 голосов
/ 09 октября 2019

Вам нужны дополнительные скобки вокруг первого ИЛИ термина в вашем ГДЕ. Термин ИЛИ вызывает логические ошибки:

SELECT COUNT(*)
FROM Trips
WHERE (Status = 'cancelled_by_driver' OR Status = 'cancelled_by_client')
AND Client_Id NOT IN (SELECT Users_Id
                      FROM Users
                      WHERE Users.Banned = 'Yes')
AND Driver_Id NOT IN (SELECT Users_Id
                      FROM Users
                      WHERE Users.Banned = 'Yes')
GROUP BY Request_at
0 голосов
/ 09 октября 2019
select count(*)
from trips, users
where trips.Status in ('cancelled_by_driver','cancelled_by_client')
and (trips.Client_Id = user.id and user.banned != 'Yes')
and (trips.Driver_Id = user.id and user.banned != 'Yes');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...