Как решить вложенный запрос MySQL? - PullRequest
0 голосов
/ 20 января 2019

Это мой запрос и вывод.Теперь я пытаюсь подсчитать общую сумму уникального item_id и имени с этим

SELECT name, SUM(item_id) 
FROM (SELECT *
      FROM items U
      JOIN users_items UI ON UI.item_id = U.id)

, но он показывает ошибку

enter image description here

Ответы [ 4 ]

0 голосов
/ 20 января 2019

Уникальный СЧЕТ предметов на пользователя будет иметь больше смысла, чем уникальная сумма предметов на предмет.

SELECT usr.name as user_name, COUNT(DISTINCT uitem.item_id) AS TotalUniqueItems
FROM users AS usr
JOIN users_items AS uitem ON uitem.user_id = usr.id
GROUP BY usr.id, usr.name
ORDER BY usr.name

Или наоборот, уникальное количество пользователей на элемент

SELECT item.name as item_name, COUNT(DISTINCT uitem.user_id) AS TotalUniqueUsers
FROM items AS item
JOIN users_items AS uitem ON uitem.item_id = item.id
GROUP BY item.id, item.name
ORDER BY item.name
0 голосов
/ 20 января 2019

Поскольку вам нужна сумма уникальных item_id s, вам нужно использовать DISTINCT с SUM:

 SELECT 
   name, 
   SUM(DISTINCT item_id) 
 FROM items U
 JOIN users_items UI 
   ON UI.item_id = U.id
0 голосов
/ 20 января 2019

Поскольку вам нужен псевдоним для подзапроса и группа по выражению как group by name

SELECT q.name, SUM(q.item_id) 
FROM (SELECT *
      FROM items U
      JOIN users_items UI ON UI.item_id = U.id) q
GROUP BY q.name
0 голосов
/ 20 января 2019

Вы найдете что-нибудь ниже

 select name, sum(item_id) FROM items U
 JOIN users_items UI ON UI.item_id = U.id
 group  by name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...