Anzahl der gefundenen ergebnisse Zählen

Technic1965

Mitglied
upload_2017-7-22_14-7-29.png Liebe Profis,
lese seit langer Zeit hier mit und bin der Meinung das hier die richtigen sind die gerne helfen.
Bin für jegliche Hilfe dankbar.

Hier meine Frage:
Diese Abfrage liefert mir die Tägliche Arbeitszeit ( summiert nach Tag) As Fahrstunden_B, Gesammt Arbeitzeit (8370min) in min im gewünschten Zeitraum, möchte aber auch die Anzahl der Arbeitstage in diesem Falle 23 Arbeitstage sollte ich als Ergebnis bekommen (das bekomme ich hier nicht hin).

PHP:
[B]SUM[/B](([B]SELECT[/B]

[B]IfNull[/B]([B]SUM[/B](davidw2000._kde_leistfahrstunden.lsdauer), 0)

[B]FROM[/B]
davidw2000._kde_leistfahrstunden
[B]WHERE[/B]
davidw2000._kde_leistfahrstunden.isUnterschrift = [B]True[/B] [B]AND[/B]
[B] [/B]
davidw2000._kde_leist.id_kdleist = davidw2000._kde_leistfahrstunden.id_kdleist [B]AND[/B]
[B] [/B]
davidw2000._kde_leistfahrstunden.is_fsklnr [B]IN[/B] ('15'))) [B]AS[/B] _Arbeitstage _Fahrstunden_B

upload_2017-7-22_14-7-29.png
 
Hallo Technic,
leider kann man dein Query nur sehr schwer lesen, da sehr viel BB-Code zwischen drin steht.
Kann es sein, dass das Query auch unvollständig ist? Es fehlt zumindest ein Select zum beginn.

Du probierst mittels Sum die Anzahl zu ermitteln das wird nichts, da er aus dem Query-Ergebnis die Zahlen Addiert.
Den Befehl den du suchst ist Count.

also z.B. so:

SQL:
Select Count((SELECT IfNull(SUM(davidw2000._kde_leistfahrstunden.lsdauer), 0)
            FROM davidw2000._kde_leistfahrstunden
            WHERE
                davidw2000._kde_leistfahrstunden.isUnterschrift = True AND
                davidw2000._kde_leist.id_kdleist = davidw2000._kde_leistfahrstunden.id_kdleist AND
                davidw2000._kde_leistfahrstunden.is_fsklnr IN ('15'))) AS _Arbeitstage _Fahrstunden_B

Das wäre dann auch eher was für den SQL-Bereich hier im Forum.
Da wir aber hier im Bereich PHP sind kann ich auch noch eine Lösung auf Basis von PHP liefern.

Wenn du das das Query-Statement hast, dann musst du dieses nur durch die Funktion num-rows, falls du mysqli verwendest, oder durch die Funktion rowcount, falls du PDO nutzt laufen lassen.
Diese Funktion liefern dann schon die Anzahl der Datensätze.

Vorteil dabei ist, dass du den Query nicht mehrmals durchführen musst und es da nicht unter Umständen zu differenzen kommen könnte.

Beschreibungen zu den Befehlen findest du hier:
http://php.net/manual/en/mysqli-stmt.num-rows.php
http://php.net/manual/de/pdostatement.rowcount.php

Noch ein schönes WE :)
 
Zurück