Werte zusammenzählen

Sasser

Erfahrenes Mitglied
Hallo Leute!

Ich möchte gern eine $var ermitteln, indem ich den Inhalt aller Spalten mit dem Anfangsbuchstaben "W" addiere. Also alle Spalten mit einem "W" am Anfang als Bezeichnung.

Wie kann man sowas realisieren?
 
Da von Spalten die Rede ist, gehe ich davon aus, dass du Spalten einer Datenbanktabellen meinst. Und da das am häufigsten verwendete Datenbanksystem in Verbindung mit PHP MySQL ist, schlage ich dir folgende Abfrage vor:
Code:
SELECT SUM(`value`)
FROM `table`
WHERE LEFT(`name`, 1) = "W"
Stelle doch bitte das nächste deine Frage im dafür vorgesehenen Forum, und zwar so, dass sie auch unmissverständlich ist.
 
Sorry, aber trotzdem schönen Dank!

Habs soweit umgebaut:

PHP:
$row = mysql_fetch_assoc(mysql_query("SELECT SUM(`value`) AS force FROM citys WHERE `coordinates` = '$spy[1]' && LEFT(`name`, 1) = "W"", $db));
 
„value“, „table“ und „name“ sind alle als Platzhalter für die tatsächlichen Spaltenbezeichner zu verstehen.
 
Ok, danke aber irgendwie gibt er mir 0 aus!

PHP:
$row = mysql_fetch_assoc(mysql_query("SELECT SUM(`value`) AS force FROM `citys` WHERE `coordinates` = '$spy[1]' && LEFT(`name`, 1) = 'W'", $db));

Achso und der Error:

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 'force FROM `citys` WHERE `coordinates` = '6:12:3' && LEFT(`name`, 1) = 'W'' at line 1
 
Ok! 1. Problem gelöst. Nun kommt das 2. Problem:

Unknown column 'value' in 'field list'

Also nochmal zum Verstehen: Ich möchte die Inhalte aller Spalten mit dem Anfangsbuchstaben "W" in der Bezeichnung!
 
Zuletzt bearbeitet:
Verstehe ich schon, aber das bringt nichts.

Aber egal, ich werde einfach eine Schleife machen, alle Feldnamen auslesen und dann einfach nur per IF-Abfrage den ersten Buchstaben abfragen. Dann addiere ich einfach immer jedes einzelne Feld zur Variable hinzu.

Danke trotzdem

Die Felder heissen W1 bis W50 und wie kann man die denn auslesen?
 
Moin Sasser,
Die Felder heissen W1 bis W50 und wie kann man die denn auslesen?

1. Du kannst diese Felder nicht mit vertretbarem Aufwand mit einem SQL-Statement einfangen.
Auch nicht mit einer PHP-Schleife.
2. Das ist ein ein Designfehler (Deiner Datenbank - nicht einer von mySQL) - und an der Ecke solltest Du Aufwand reinstecken und deshalb
3. in den sauren Apfel beißen und das SQL-Statement halt einmal von Hand reintippseln mit ...
Code:
Select bla, (w1+ w2 + w3 +w4 .....+w50) as SumOfAllWs from blubb

Ist doch nur eine Zeile, was soll der Geiz?. Dauert 43sec.

Grüße
Biber
 
Zurück