Hi Daniel,
das du mit PHP arbeitest bringt leider nicht viel… Die Datenbank wäre wichtiger gewesen, wie das ganze in mySQL funktioniert weiss ich auf die schnelle niocht, in Oracle könnte es über UNION gehen
hab hier mal ein schnelles Beispiel:
–Tabbellen:
CREATE TABLE player(
pl_ID INTEGER,
points INTEGER
);
CREATE TABLE houses(
pl_ID INTEGER,
points INTEGER
);
CREATE TABLE armees(
pl_ID INTEGER,
points INTEGER
);
–Inhalte:
INSERT INTO blo_player(pl_id,points)VALUES(1,5);
INSERT INTO blo_player(pl_id,points)VALUES(2,10);
INSERT INTO blo_houses(pl_id,points)VALUES(1,20);
INSERT INTO blo_houses(pl_id,points)VALUES(1,30);
INSERT INTO blo_houses(pl_id,points)VALUES(1,40);
INSERT INTO blo_houses(pl_id,points)VALUES(2,1);
INSERT INTO blo_armees(pl_id,points)VALUES(1,10);
INSERT INTO blo_armees(pl_id,points)VALUES(1,10);
INSERT INTO blo_armees(pl_id,points)VALUES(1,10);
INSERT INTO blo_armees(pl_id,points)VALUES(2,2);
Gruppierung jeder einzelnen Tabelle und Spielerpunkteanzahl, einzelne Ergebnisse über Union verbinden und auf die Gesamtmenge Gruppieren inklusive sum(Punkte)
SELECT pl_id,SUM(points) FROM(SELECT pl_id,SUM(points) points
FROM player
GROUP BY pl_id
UNION
SELECT pl_id,SUM(points)
FROM houses
GROUP BY pl_id
UNION
SELECT pl_id,SUM(points)
FROM armees
GROUP BY pl_id)
GROUP BY pl_id
kleiner Tipp(gilt auch für mysql): wenn du deine Tabellen in einer Abfrage über die ID verknüpfst, alle Punkte summierst und diese miteinander addierst, wirst du viel mehr Punkte erhalten als du willst. Der Grund ist einfach der, dass bei deiner Tabellenstruktur, mehr Zeilen entstehen als du willst. Probier einfach mal in meinem Beispiel einen Select * über alle Tabellen verknüpft, da erhälst du für Spieler 1 neun Zeilen in denen jeweils 5(für Spielerpunkte), 10(für armeepunkte) und 20,30 oder 40 für Häuserpunkte steht. das addiert macht insgesamt 405 Punkte und nicht 125 wie gewollt.