Falsche berechnung

Liamderprogger

Erfahrenes Mitglied
Hi,

ich bekomme eine falsch Berechnung undzwar rechnet er das eigentliche Ergebnis mal die Anzahl der ID's. Wie muss ichs anders machen, ich komme da nicht weiter.
Muss ich da auch wirklich noch GROUP BY dazu nehmen?

In diesem Beispiel bekomme ich A nicht als 5 sondern als 10 weil die ID 2 Mal da ist, das muss gehoben werden.
Wenn ich in table2 die ID 1 3 Mal hätte bekäme ich 15 ich möchte aber nur 5.
PHP:
$_GET['A'] // = Zahl die einem A-Wert entspricht(geposted)
$sql = "SELECT
			SUM(table1.1) as all_1,
			SUM(table1.2) as all_2,
			SUM(table1.3) as all_3,
			(SUM(table1.1) + SUM(table1.2) + SUM(table1.3)) AS sum
		 FROM
			table1,
			table2,
		 WHERE
			table1.UserID = table2.UserID AND
			table2.A = ".$_GET['A']."
		 GROUP BY
		 A;";
$result = mysql_query($sql) OR die(mysql_error());
	 while ($row = mysql_fetch_assoc($result)) {
	 echo "	<tr>\n";
	 echo "		<td ID=\"ueber\"><span ID=\"ueber_head\">insgesammt</span></td>\n";
	 echo "		<td ID=\"ueber\">".null($row['all_1'])."</td>\n";
	 echo "		<td ID=\"ueber\">".null($row['all_2'])."</td>\n";
	 echo "		<td ID=\"ueber\">".null($row['all_3'])."</td>\n";
	 echo "		<td ID=\"ueber\">".null($row['sum'])."</td>\n";
	 echo "	</tr>\n";
	 }

table1
Code:
UserID 1 2 3
1 50 25 5
2 60 30 15 
5 51 39 66
7 62 85 16

table2
Code:
ID UserID A B C D
1 1 5 30 60 90
1 1 5 20 10 90
2 2 5 80 80 80
3 5 7 70 70 70
4 7 6 60 60 60
 
Versuch doch mal die Version:

SELECT
SUM(table1.1) as all_1,
SUM(table1.2) as all_2,
SUM(table1.3) as all_3,
(SUM(table1.1) + SUM(table1.2) + SUM(table1.3)) AS sum
FROM
table1 left join table2
ON
table1.UserID = table2.UserID
WHERE
table2.A = ".$_GET['A']."
GROUP BY
A;";
 
Hi,

da hab ich aber das gleiche Problem, dass wenns mehrere Werte von einer UserID sind da der Wert dann mehr mals gerechnet wird. kann man da irgendwas mit DISTINCT machen oder so? Mit dem JOIN kenn ich mich nicht aus gibbts da irgend ein gutes, deutsches Tutorial zu, wenn ja wäre ich für nen Link sehr dankbar.

EDIT: Habs endlich selbst geschafft! Ich freu mich...

Code:
 $sql = "SELECT
	 SUM( A.1 ) AS all_1,
	 SUM( A.2 ) AS all_2,
	 ...
	 ...
	 (SUM( A.1 ) +
	 SUM( A.2 ) +
	 ...
	 ...
	 ) AS sum
	FROM
	 table1 AS A,
	 (SELECT DISTINCT
	 B.UserID
	 FROM
	 table2 AS B
	 WHERE B.A = ".$_GET['A']."
	 ) AS C
	WHERE
	 A.UserID = C.UserID;";

Bin mir jetz nicht ganz sicher ob ichs für dieses Beispiel jetzt richtig benannt hab die table1 und table2 aber denk schon - ich benutze in meinem Script andere Namen wie man sich vll. denken konnte.

Danke für Deine Hilfe.

SQL-Tutorial

EDIT2: hm.... auf meinem Testsever es, wie ichs auf meinen Webserver lade und teste bekomme ich folgendes Fehlerchen:

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 DISTINCT B.UserID FROM

Ich habe auf meinem Testserver (lokal) Version MySQL 4.1.13

Auf dem Webserver MySQL 4.0.26-log , das log ist sicher unwichtig...

Wie passe ich den Code an, dass das damit auch ?

EDIT3: ..... ich les grad auf MySQL.com, dass erst ab Version 4.1 Subqueries eingebaut sein sollen, so hat sich das nun scheinbar erledigt...
 
Zuletzt bearbeitet:
Zurück