DB-Werte in Tabelle ausgeben

bibimo

Neuer Benutzer
Beiträge
4
Hallo an Alle,
ich brauche dringend eure Hilfe, da ich jetzt seit 2 Tagen an einem Problem sitze und nicht weiter komme.

Ich muss Werte aus einer SQL-DB in PHP so aufbereiten, dass es so aussieht, wie hier:

Image.jpeg

Diese Felder sind relevant:
Tag = DruckDateTime
Stunden = DruckDateTime
Scanner = DruckerName

Und ich habe dieses Statement:

print"<center><table width=1000 border=1>

$ausgabe = "Select
COUNT(*),
datepart(hh, DruckDateTime)
From dbo.WaWiRueckExport Where DruckDateTime >= Convert(datetime2,'2021-07-29 00:00') AND DruckDateTime <= Convert(datetime2,'2021-07-29 23:59') group by datepart(hh, DruckDateTime),DruckerName order by DruckerName";

foreach ($pdo->query($ausgabe) as $show) {
print"<tr><td align=center>$show[0]</td></tr>";

}
print"</table>";

Als Ergebnis bekomme ich das:

Tabelle.jpg

Die Werte sind alle da und für den Scanner 1 passt das auch so. Aber jetzt wird natürlich nach den Werten ... Stunde 15 = 19 / Stunde 16 = 9 / Stunde 17 = 18 kein Umbruch gemacht, sodass es für Scanner 2 wieder oben los geht mit Stunde 6 =20 / Stunde 7 =24 / Stunde 8 =16...

Eigentlich ja klar. Aber es muss doch eine Möglichkeit geben, das Ergebnis richtig abzubilden!?

Oder ist vielleicht meine Abfrage schon falsch?
Ich seh den Wald vor lauter Bäumen nicht mehr und bitte euch herzlich, mir irgendwie weiter zu helfen.

Bin dankbar für jeden Tipp und wünsche euch Allen einen schönen Tag.

Bibimo
 
Werbung:
Dein Group By ist schon mal "falsch". Es enthält eine Spalte, die Du im Select nicht ausgibst.

Es gibt exotische Fälle, wo man sowas machen würde, aber idR will man nicht nach Werten gruppieren, die nicht angezeigt werden. Tut man es dennoch, so macht die DB das schön brav und gibt Gruppen aus, deren Gruppierkriterium unsichtbar ist (also nicht nachvollziehbar).
Du musst also Druckername aus dem Group By rausnehmen. Und Du willst wahrscheinlich nach der Zeit sortieren, nicht nach Druckername.

Dass keine Daten angezeigt werden, liegt entweder an eine nicht zutreffenden Where Clause oder an der PHP Verarbeitung(keine Ahnung davon).
Wenn das nackte Statement in einem SQL Tool auch keine Werte liefert, liegt es an Where. Liefert es Werte, liegt es an der Weiterverarbeitung in PHP.
 
P.S.: Es ist uncool, Bilder seiner Daten/Tabellen/Abfragen zu posten. Nimm lieber eine Textausgabe eines ganz normalen SQL Terminals, also Text Copy, Text Paste. Damit kann man besser weiterarbeiten, wenn man helfen will.
 
Vielen Dank für die schnelle Antwort,
das mit den Bildern wusste ich nicht, sorry. Aber ich werd's mir merken.

Die Daten sind alle da; das ist nicht mein Problem.

Das Problem ist, dass alle Daten in der Schleife untereinander ausgegeben werden und ich es nicht hin bekomme, nach "Stunde 17" eine neue Spalte zu machen.
 
Ja, sorry, ich habe nicht richtig aufgepasst. "Nach Stunde 17" ist kein geeignetes Kriterium für Dein Problem.
Nicht das Group By ist falsch, sondern die Select Clause. Hier muss auch der Druckername auch rein. Wonach willst Du sonst in PHP entscheiden, was welche Spalte kommt?
Ab da ist es ein PHP Problem.
 
Werbung:
das mit den Bildern wusste ich nicht, sorry. Aber ich werd's mir merken.
Wenn Du die Daten irgendwie als "Text" kopieren kannst (z.B. mit Komma oder Tab getrennt), kannst Du Tools wie ASCII Table Generator oder Plain text tools verwenden um daraus besser lesbare Tabellen im "Textformat" zu machen (wäre schön wenn das Forum Markdown unterstützt, aber tut es leider nicht. So bleibt nur die Lösung die ASCII Tabelle mit einem [ code ] Tag zu umschliessen)
 
Zurück
Oben