Ich habe 3 Tabellen, die ich abfragen muss, wo ich nach 2 Spalten gruppieren muss und auch die Tabellen beitreten, aber immer noch alle Ergebnisse zurückgeben.Gruppieren Sie nach 2 Spalten mit 2 Joins und geben Sie alle Zeilen mit Summen zurück
Users
ID User_name Category Reason Change_date
1 John 1 2 2016-01-05
2 James 3 1 2015-10-02
3 Peter 1 4 2016-01-04
4 Tony 1 4 2016-01-15
5 Fred 1 4 2016-02-25
6 Rick 3 2 2016-04-19
7 Sonia 2 1 2016-10-14
8 Michelle 2 2 2015-11-09
9 Phillip 3 3 2016-03-01
10 Simon 3 3 2016-03-07
Category
ID Category_name
1 User
2 Super user
3 Admin
Reason
ID Reason_name
1 Promotion
2 Upgrade
3 Sponsor
4 Normal
habe ich einige der Suche und fand https://stackoverflow.com/a/28158276/1278201 und modifizierte meine Abfrage, um zu versuchen und es zu verwenden:
SELECT category_name, reasons.reason_name, u1.id as user_id, user_name
from users as u1
JOIN (SELECT id from users where users.change_date BETWEEN '2016-01-01'
AND '2016-11-06' group by users.category, users.reason) AS u2
ON u1.id = u2.id
left join reason on u1.reason=category.id
left join category on u1.category=category.id
Die Ergebnisse werden nur dann zurückgegeben werden, um die Gruppe mit durch - ich sollte 8 Zeilen zurück, aber ich bekomme nur 5, was für jedes Vorkommen eines jeden Grundes in jeder Kategorie eins ist.
Mein erwartetes Ergebnis ist:
category_name reason_name user_id user_name
User Upgrade 1 John
"Upgrade" count 1
Normal 3 Peter
4 Tony
5 Fred
"Normal" count 3
"User" count 4
Super user Promotion 7 Sonia
"Promotion" count 1
"Super user" count 1
Admin Upgrade 6 Rick
"Upgrade" count 1
Sponsor 9 Phillip
10 Simon
"Sponsor" count 2
"Admin" count 3
Wie kann ich alle 8 Reihen als auch zurück in der Lage, zählt jeder für category_name
und reason_name
zu bekommen?
Was sind Sie mit 'Ü2' versuchen zu tun? –
Ich änderte meine ursprüngliche Abfrage mit der Antwort, mit der ich verlinkt bin - ich denke, die Idee ist, dass Sie sich selbst anschließen, damit Sie dann alle Daten anzeigen können und nicht nur die gruppierten Ergebnisse – bhttoan
Verwenden Sie nicht 'GROUP BY' in der Unterabfrage . Sie wählen einen zufälligen Benutzer aus jeder Gruppe aus. – Barmar