Unerabfragen

mewX

Erfahrenes Mitglied
Hallo!
Warum funktioniert folgendes nicht?

Code:
SELECT SUM(resBuilt)
FROM inseln
WHERE `user_id` = ANY (SELECT `id` FROM user WHERE `alliance` = '1')
in resBult steht für jeden eintrag aus inseln ein wert, der darstellt, wieviele resspurcen verbaut wurden. in user_id steht wem die insel gehört.
dann gibt es eine tabelle user, in der steht, zu welcher allianz der user gehört.
nun möchte ich eine summe des resBuitl-wertes aller inseln haben, die einem user der allianz 1 gehört.
müsste doch eigentlich so funktionieren, oder?
Code:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT `id` FROM user WHERE `alliance` = '1')' at line 3
 
Hallo mewX,

die Syntax ist an sich korrekt, aber deine DB wird wohl keine Subquerys unterstützen (MySQL<4.1?)

Da dich ja die Summe aller Ressourcen aller User einer User-Alliance interessiert, kannst du beide Tabellen joinen.
Folgende Alternativen würden damit funktionieren:

SQL:
select SUM(resbuilt) 
  from inseln,
       user 
 where inseln.user_id = user.id 
   and user.alliance = '1'

bzw. ANSI:

SQL:
 select SUM(resbuild) 
  from inseln inner join user on (inseln.user_id = user.id) 
 where user.alliance = '1'

Markus
 
Ja, stimmt, daran wird's liegen.
Danke, deine Lösungsvorschläge funktionieren auch :)

gruß
 
Zurück