dedlfix: MYSQL Abfrage - COUNT bzw. SUM

Beitrag lesen

Hi!

$query="SELECT DISTINCT LEFT(plz, 2) bereich, COUNT(LEFT(plz, 2)) anzahl FROM TABELLE WHERE status BETWEEN '1' AND '10' && plz LIKE '".mysql_real_escape_string('0')."%' GROUP BY LEFT(plz, 2) ";

Wenn deine Intention zum Konstrukt COUNT(LEFT(plz, 2)) die ist, keine NULL-Werte zu zählen, so reicht COUNT(plz) aus. LEFT() liefert nur dann NULL als Ergebnis, wenn bereits das Ausgangsmaterial NULL ist, insofern kann man auch gleich das Ausgangsmaterial nehmen, ohne den Server mit einer überflüssigen Berechnung zu belasten. Die zu zählenden Werte werden in deinem Fall nicht primär über die Formel eingeschränkt, sondern über die WHERE-Bedingung und die Gruppierung.

Hast du das mysql_real_escape_string('0') wirklich so im Original-Code stehen? Das wäre nämlich auch unsinnig. Sinnig wäre es hingegen, wenn statt der (hier feststehenden) 0 ein variabler Wert eingefügt wird.

Nun versuche ich die Abfrage zu erweitern und die Summe der Einträge zu dem PLZ-Bereich beginnend mit "0" zu ermitteln:
[...] SUM(plz) gesamt [...]
Leider bekomme ich aber kein Ergebnis geliefert-also es wird bei

//PLZ gesamt

echo $row['gesamt'];


> nichts ausgegeben.  
  
Verwende var\_dump($row['gesamt']), dann bekommst du genauer gesagt, ob es NULL oder ein Leerstring ist. Das error\_reporting steht auch auf E\_ALL (und display\_errors auf on), so dass du nicht irgendeinen anderen Fehler unangezeigt lässt? Warum aber willst du Postleitzahlen addieren?  
  
  
Lo!