Как вернуть все объекты, связанные с пользователем, которые все находятся в другой таблице тоже с MYSQL - PullRequest
0 голосов
/ 12 мая 2019

Я работаю над проектом электрического скутера (школьный проект), как LIME, и мне нужно вернуть результат определенного запроса (см. Ниже)

Я использую MYSQL 5.7.24 и уже попробовал сотню запросов без хорошего результата сопоставления. У меня есть 2 таблицы для этого запроса: Таблица поездок, которая содержит userID, scooterID и другие строки. Таблица перезагрузки, содержащая userID, scooterID и другие строки.

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

Фактическая проблема заключается в том, «что использовали ВСЕ скутеры ...».

Вот пример неработающего запроса:

SELECT r.userID
FROM reload r
LEFT JOIN trips v
ON r.useID= v.`userID` AND r.scooterID= v.scooterID WHERE r.`scooterID ` IS NOT NULL
GROUP BY r.userID

Пример:

Если пользователь X использует самокат A, B и перезагружает самокат A, B. Мой запрос должен вернуть userID пользователя X.

Теперь, если пользователь X использует самокат A, B и перезагружает самокат A, B, C. Мой запрос НЕ должен возвращать userID пользователя X.

1 Ответ

0 голосов
/ 12 мая 2019

Вместо предложения WHERE требуется предложение HAVING:

SELECT r.userID
FROM reload r LEFT JOIN trips v
ON r.userID= v.userID AND r.scooterID = v.scooterID 
GROUP BY r.userID
HAVING SUM(v.scooterID IS NULL) = 0

Если в столбце v.scooterID для userID есть значения null, тогда условие v.scooterID IS NULL оценивается как 1, и этот пользователь будет исключен из результатов. См. демо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...