Dies ist meine Abfrage und Ausgabe. Jetzt versuche ich, die Gesamtsumme der eindeutigen item_id und des Namens damit zu zählen

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

Aber es zeigt Fehler

enter image description here

0
AYAN ADHIKARY 20 Jän. 2019 im 20:05

4 Antworten

Beste Antwort

Finden Sie unten etwas

 select name, sum(item_id) FROM items U
 JOIN users_items UI ON UI.item_id = U.id
 group  by name
0
Zaynul Abadin Tuhin 20 Jän. 2019 im 17:18

Eine eindeutige Zählung der Artikel pro Benutzer wäre sinnvoller als eine eindeutige Zusammenfassung der Artikel pro Artikel.

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

Oder umgekehrt, eine eindeutige Anzahl von Benutzern pro Artikel

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
LukStorms 20 Jän. 2019 im 17:49

Weil Sie einen Alias für die Unterabfrage und eine Gruppe nach Ausdruck als group by name benötigen

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
Valerian Pereira 20 Jän. 2019 im 18:32

Da Sie die Summe der eindeutigen item_id benötigen, müssen Sie DISTINCT mit dem SUM verwenden:

 SELECT 
   name, 
   SUM(DISTINCT item_id) 
 FROM items U
 JOIN users_items UI 
   ON UI.item_id = U.id
0
e_i_pi 21 Jän. 2019 im 04:16