mysql Abfrage | zwei Spalten vergleichen und dann aufsummieren

die möchte ich nicht mitgezählt bekommen - also ignorieren.
Ich habe das script von dir kopiert, wie du an meinem codeschnipsel siehst und dann listet er nur die orte, die leere namen und leere auftragsnummern haben. die werden auch korrekt aufsummiert.
 
Ich habe jetzt in meinen Beispieldaten noch eine Zeile mit Stuttgart ohne Nummer und ohne Namen erfasst.
Dann hab ich noche in WHERE eingebaut um diesen rauszufiltern. Das Resulat sind wieder die beiden Wie oben
SQL:
SELECT
	ort,
	lkomm,
	lauftr,
	COUNT(*) AS anzahl,
	SUM(preis) AS summe
FROM
	(
		SELECT
			@last_komm:= IFNULL(x.kom_name, @last_komm) AS lkomm,
			@last_auftr:= IFNULL(x.kom_auftr, @last_auftr) AS lauftr,
			@last_ort := x.ort AS ort,
			x.preis
		FROM
			xdaten AS x,
			(SELECT @last_ort := '', @last_komm := '', @last_auftr := '') AS vars
		WHERE
			NOT (x.kom_name IS NULL AND x.kom_auftr IS NULL)
		ORDER BY
			x.ort,
			x.kom_name DESC,
			x.kom_auftr DESC
	) AS groups
GROUP BY
	ort,
	lkomm,
	lauftr
HAVING
	COUNT(*) > 2

Und wenn ich dein PHP laufen lasse, bekomme ich
muenchen 3 3,00 stuttgart 4 4,00

Was du ggf. mal noch ausprobieren kannst, ist im Subselect wo die Variabeln gesetzt werden die Leerstrings durch 0 Ersetzen
SQL:
(SELECT @last_ort := 0, @last_komm := 0, @last_auftr := 0) AS vars
 
Zuletzt bearbeitet von einem Moderator:
jetzt habe ich mal den mysql-editor gewechselt und siehe da:

illegal mix of collations ... for operation 'ifnull'

wo muss ich jetzt ein COLLATE einfügen?
 
Hast du es so versucht?
SQL:
(SELECT @last_ort := 0, @last_komm := 0, @last_auftr := 0) AS vars
 
Zuletzt bearbeitet von einem Moderator:
jetzt habe ich noch weiter im Browser getestet:
1. Wenn ich die Nullen statt '' einfüge, dann kommt die "illegal mix" Fehlermeldung.
2. Wenn ich die '' statt den Nullen einfüge, dann kommt das Ergebnis, korrekt zusammen gezählt und korrekt summiert, allerdings nur die zeilen, die im kom_name und kom_auftr leer sind
 
Zurück