SQL общее количество продуктов учитывается только для одного пользователя вместо двух, соответствующих идентификатору - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь написать простой запрос SQL, чтобы получить всех пользователей с определенным идентификатором, а также подсчитать для каждого пользователя, сколько у них продуктов. Следующая инструкция SQL работает нормально, но возвращает только одного пользователя вместо двух. Это простой запрос, который должен вернуть обоих пользователей, которые соответствуют указанному ниже идентификатору. Есть идеи?

SELECT UserSocial.user_id, UserSocial.client_id, UserSocial.user_name, UserSocial.user_country, COUNT(product_id) AS total
FROM UserSocial
JOIN Products ON Products.client_id = UserSocial.client_id
WHERE UserSocial.user_id = '100'

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Я считаю, что COUNT (product_id) автоматически группирует все записи в одну группу, потому что вы сами не указали никаких групп. Попробуйте добавить предложение GROUP BY следующим образом:

SELECT UserSocial.user_id, UserSocial.client_id, UserSocial.user_name, UserSocial.user_country, COUNT(product_id) AS total
FROM UserSocial
JOIN Products ON Products.client_id = UserSocial.client_id
WHERE UserSocial.user_id = '100'
GROUP BY UserSocial.client_id

Это должно заставить функцию COUNT агрегировать product_ids для каждого пользователя вместо агрегирования product_ids для всех строк в наборе данных.

0 голосов
/ 22 апреля 2020

Сделайте LEFT JOIN, чтобы включить пользователей без каких-либо продуктов. Добавьте GROUP BY. Используйте псевдонимы таблиц.

SELECT us.user_id, us.client_id, us.user_name, us.user_country, COUNT(product_id) AS total
FROM UserSocial us
LEFT JOIN Products P ON p.client_id = us.client_id
WHERE us.user_id = '100'
GROUP BY us.user_id, us.client_id, us.user_name, us.user_country
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...