2011-01-10 6 views
1

Ich führe eine Abfrage, in der ich Joins verwende. Darin habe ich eine Unterabfrage verwendet, die den Gesamtbetrag angibt. Ich möchte nach dem Ergebnis der Unterabfrage wie folgt sortieren.mysql Sortierung und zwischen der Verwendung einer Unterabfrage

"select users.*, (select sum(amount) as camount from donation where donation.uid=users.id) as camount from users where users.confirmed=1 and camount between 3 and 5 order by camount"; 

Ich erhalte eine Fehlermeldung: 1064.

Wie durch sotring mit dem Ergebnis einer Sub-Abfrage abzufragen?

Antwort

0

Diese

select Benutzer versuchen. *, (SELECT SUM (d.Amount) von der Spende d, User u wo d.uid = u.id) als camount von den Benutzern, wo users.confirmed = 1 und camount zwischen 3 und 5, um von camount

+0

Nicht ganz was OP will. Die Abfrage erhält den Gesamtbetrag von * allen * Benutzern für * jeden * Datensatz. –

1

weiß ich nicht, was den Fehler auslöst, man bekommt, aber die Unterauswahl zu einem inneren beweglichen join sollte die gleichen Ergebnisse liefern.

SQL-Anweisung

select users.* 
     , donation.camount 
from users 
     INNER JOIN (
      select uid 
        , sum(amount) as camount 
      from donation 
      group by 
        uid 
     ) donation ON donation.uid = users.id 
where users.confirmed = 1 
     and donation.camount between 3 and 5 
order by 
     donation.camount