Join über 3 Tabellen, ORDER funktioniert nicht

Schind

Mitglied
Hallo,
ich habe schon seit längerem ein Problem bei einer meiner Abfragen, und komme selbst nicht auf die Lösung. Ich hoffe, dass mir hier jemand helfen kann.

Ich habe 3 Tabellen:
- User: Enthält allgemeine Userinformationen
- Konto: Enthält Kontoinformationen für die einzelnen User
- Zukauf: Enthält zugekaufte Kontingente der einzelnen User

Die Tabellen sind folgendermaßen aufgebaut (nur die relevanten Spalten):
Code:
User:
id | benutzername |status
---------------------------------
1  | testuser        | 1
2  | blabla          | 3

Konto:
uid | limit
------------
1    | 1
2    | 1

Zukauf:
uid | type | remain
-----------------------
1    | 1      | 30
1    | 2      | 90
...

Ich benötige einen SQL Befehl, der im Prinzip für jeden User die Werte in zukauf.remain addiert und anzeigt. Ergebnis soll also z.B. sein:
Code:
id | sum(remain) | ...
1  | 120
...
Das funktioniert auch sehr gut, nur die Sortierung in meinem SQL-Befehl funktioniert leider nicht. Dies ist aber sehr wichtig.
Hier das Statement:
Code:
SELECT *, sum(remain) 
FROM user as u 
LEFT JOIN zukauf as z ON u.id = z.uid 
LEFT JOIN konto as k ON u.id = k.uid 
WHERE u.deleted = 0 AND z.deleted = 0  
GROUP BY z.uid 
ORDER BY u.status ASC
Ich weiß, dass das Sortieren aufgrund des GROUP BY nicht funktioniert, allerdings weiß ich nicht, wie ich das sonst lösen sollte. Kann mir jemand helfen
 
Hallo,
in Deiner Tabellensdefinition steht nix von "deleted"?
Ich habe mal die Tabellen simuliert (UNION) bei mir klappt das....

PHP:
select *,  sum(remain)
from 
-- User:
(
select 1 as id ,'testuser' as name, 1  as status
union
select 2 as id ,'blabla' as name, 3  as status
) u
left join
(
-- Konto:
select 1 as uid , 1 as limit_
union 
select 2 as uid, 1 as limit_ 
) k
on u.id = k.uid
left join
(

-- Zukauf:

select 1 as uid , 1 as type_    , 30 as  remain
union
select 1 as uid , 2 as type_   , 90 as  remain
) z
on k.uid = z.uid
group by u.id
order by u.status asc
 
Zuletzt bearbeitet:
Zurück