Hallo zusammen,
ich habe ein etwas komplexeres Problem. Ich habe eine Spitverbrauchsstatistik entwickelt.
Nun habe ich eine Ausgabe zb für den Monat Dezember 2008. Gesamtkilometer, Verbrauch usw. für ein bestimmtes Fahrzeug. Das Fahrzeug ist 4x gefahren, davon 3 mit und 1x ohne Ladung.
Nun möchte ich einmal alle Fahrten haben und einmal alle Fahrten mit Passagieren.
Mein Ansatz:
PHP-Code:
SELECT Count( touren.id ) AS touren, Date_Format( touren.datum, '%d.%m.%y' ) AS datum, touren.id AS id, fahrer.name, fahrer.vorname, sum( touren.passagiere ) AS summepassagiere, (
sum( touren.passagiere )
) / ( Count( touren.id ) ) AS schnittpassagiere, sum( touren.leerfahrt ) AS leerfahrt, sum( kraftstoffart1) AS gesamtverbrauch, sum( fahrtstrecke ) AS strecke,(sum( kraftstoffart1 ) ) / sum( fahrtstrecke )
) *100 AS fahrdurchschnitt
FROM touren, fahrer
WHERE touren.fahrzeug = '153'
AND Date_Format( touren.datum, '%b' ) = 'Dec'
AND Date_Format( touren.datum, '%Y' ) =2008
AND touren.fahrer = fahrer.id
AND touren.gueltig = 'y'
GROUP BY touren.fahrer
ORDER BY datum ASC
So habe ich die Summe und den Durchschnittsverbrauch aller Fahrten. So und nun möchte ich die durchschnittliche Anzahl der Passagiere. Bei der Berechnung dürfen aber nur die Fahrten mit Passagieren berücksichtigt werden. Wenn ich im Dezember 23 Fahrten habe, davon 8 Leerfahrten, muss ich die Summe der Passagiere durch 15 teilen und nicht durch 23.Wie komme ich an die 15? Ein simpler count bringt mir die 23. Packe ich die Bedingung [php]where passagiere !=0[/php ] mit in die where Bedingung, wird das Gesamtergebnis verfälscht und es werden nur die Fahrten mit Passieren erfasst. Leider verbraucht das Fahrzeug auch bei Leerfahrten Sprit. ;)
Danke im voraus für eure Hilfe.
Versucht habe ich es auch mit einer simplen if-Abfrage:
if(fahrten.passagiere!=0) $fahrten_nichtleer = $fahrten_nichtleer+$touren['fahrten'];
Das funktioniert aber nicht, da durch das group by fahrer mehrere Fahrten zusammengefasst werden und sobald eine fahrt mehr als 0 Passagiere hat, ist die bedingung erfüllt und es werden alle Fahrten (leer und mit Passier gezählt).
Any idea? Dane für eure Mühe. Hoffe, ich habe mich verständlich ausgedrückt.
Gruß
Oliver