Werte aus 2 Tabelle addieren

Sasser

Erfahrenes Mitglied
Hallo alle zusammen!

Ich habe bisher eine Abfrage:

PHP:
$result = mysql_query("Select COUNT(`alliance`) AS user, `alliance` FROM user $limit", $db);

Nun sollen allerdings aus einer Tabelle citys die `points` zu der Stadt jedes Besuchers addiert werden. Anschließend sollen diese Werte jedes Users addiert werden welche in der gleichen Allianz sind.

PHP:
$result = mysql_query("Select `user`, `alliance`, COUNT(`alliance`) AS allianceuser FROM user WHERE `alliance` != '' GROUP BY `alliance` $limit", $db);

Nun müssen nur noch die Punkte (points) in der Tabelle citys von jedem User addiert werden und alle zusammengefasst werden welche in der Tabelle user die gleiche `alliance` haben.

Habe was von UNION gelesen, allerdings bekomme ich das nicht hin... Mir fehlen nur noch die Punkte, alles andere funktioniert.

Sorry, aber das musste ich nochmal posten, denn so denke ich dass ich auf dem richtigen Weg bin, allerdings bekomm ich keine Ausgabe:

PHP:
mysql_query("Select user.user, user.alliance, COUNT(user.alliance) AS allianceuser FROM user INNER JOIN citys ON user.user = citys.user SUM(citys.points) GROUP BY user.alliance", $db);
 
PHP:
mysql_query("Select user.user, user.alliance, COUNT(user.alliance), SUM(citys.points) AS allianceuser FROM user INNER JOIN citys ON user.user = citys.user GROUP BY COUNT(user.alliance)", $db);
So könnte es gehen, wenn ich mich nun nicht verschaut habe. Allerdings denke ich eher, dass dein Problem ein SQL Problem und kein PHP Problem ist.

Gibt die Datenbank einen Fehler aus?
 
Habs mal an nen paar stellen noch geändert, wenn ich die Funktion richtig verstanden habe:

PHP:
mysql_query("Select user.alliance, COUNT(user.alliance) AS allianceuser, SUM(citys.points) AS points FROM user INNER JOIN citys ON user.user = citys.user GROUP BY COUNT(user.alliance)", $db)

Bekomme aber den Error:

Invalid use of group function
 
Ok, Ok hab den Fehler gefunden:

PHP:
GROUP BY user.alliance

statt:

PHP:
COUNT(user.alliance)

musste es heissen! Ich teste jetzt mal, aber es müsste funktionieren...

Ist dabei eigentlich schon bedacht, dass ein User aus der Allianz mehrere Städte in citys haben kann, also demnach mehr punkte bei einem User addiert werden müssen?

PHP:
mysql_query("Select user.alliance, COUNT(user.alliance) AS allianceuser, SUM(citys.points) AS points FROM user INNER JOIN citys ON user.user = citys.user GROUP BY user.alliance", $db)
 
Ich habe mir die Anleitung schon ein paar mal dazu angesehen, allerdings blicke ich da nicht so recht durch...

Wie baue ich das jetzt noch ein?

Oder ist das jetzt einfacher als ich dachte?

Dass ich einfach ein LEFT JOIN anstatt einem INNER JOIN verwende :suspekt:

Sorry für den Doppelpost, aber zu den Thema noch eine Frage:

Ich hab ja ein Ergebnis:

PHP:
COUNT(user.alliance) AS allianceuser

und

PHP:
SUM(citys.points) AS points

Wie kann man in der Abfrage die points durch die allianceuser dividieren und dann danach absteigend ordnen?

Ich dachte so in etwa, aber da bekomme ich den Error: Unknown column 'allianceuser' in 'field list'

PHP:
AVG(points / allianceuser) AS emptypoints
 
SQL:
AVG(SUM(citys.points)/COUNT(user.alliance)) AS emptypoints
 
Zuletzt bearbeitet von einem Moderator:
Zurück