Seite 1 von 1
mysql abfrage nach datum
Verfasst: 03.04.2014 22:09
von bluebull
Hallo Zusammen
Ich habe eine Datenbank mit Projekten, Mitarbeitern und einer Zeiterfassung. Nun möchte ich eine Abfrage nach Datum, Projekt und Arbeitsstunden gestalten, habe abr keine Ahnung wie ich das anstellen soll. Ich möchte eine horizontale darstellung der Arbeitsunden nach Projekten aufgliedern und dabei das Datum als Spaltentitel haben:
...................... 01. .. 02. .. 03. .. 04. ........ [datum fortlaufen]
Projekt 1 .......... 8 ... 4 ... 8 ... 8
Projekt 2 .......... 2 ... 6 ... 1 ... 3
Projekt 3 .............................
wie stell ich das an? Danke und Gruss.
Re: mysql abfrage nach datum
Verfasst: 03.04.2014 22:21
von HabNurNeFrage
Hi,
schau mal hier rein:
http://sql.lernenhoch2.de/lernen/sql-anfanger/
Und um die Datenausgabe zu formatieren, könnte das hier helfen:
http://de.selfhtml.org/index.htm
LG
Re: mysql abfrage nach datum
Verfasst: 03.04.2014 23:05
von Miriam
Die Ausgabe, die Dir vorschwebt ist imho mit SQL allein nicht zu bewerkstelligenß
Dafür mußt Du dann auch noch etwas z. b. mit php machen und die Daten, die geliefert werden in Form bringen.
Re: mysql abfrage nach datum
Verfasst: 04.04.2014 19:16
von bluebull
hallo und danke. habe mir mal folgende abfrage zusammengebsatelt:
Code: Alles auswählen
<?php
$datumaktuell = "2014-03-30";
$sql = "SELECT * FROM projekte, zeiterfassung WHERE projekte.id = zeiterfassung.projektID AND zeiterfassung.datum = '$datumaktuell'";
$res = mysql_query($sql);
echo "<table border='1'>";
while($row = mysql_fetch_object($res))
{
echo "<tr>";
echo "<td>",$row->stunden,"</td>";
echo "</tr>";
}
echo "</table>";
?>
diese gibt mir die stunden vom projekt zum aktuellen datum aus. jetz möchte ich aber die abfrage für jedes weiter datum haben. und das datum als splatentitel anzeigen. wie krieg ich das hin?
Re: mysql abfrage nach datum
Verfasst: 04.04.2014 19:28
von cYbercOsmOnauT
Code: Alles auswählen
<?php
$sql = "SELECT * FROM projekte AS p
INNER JOIN zeiterfassung AS z ON p.id = z.projektID
ORDER BY z.datum ASC";
$res = mysql_query($sql);
echo "<table border='1'>";
while($row = mysql_fetch_object($res))
{
echo "<tr>";
echo "<td>",$row->datum,"</td>";
echo "<td>",$row->stunden,"</td>";
echo "</tr>";
Re: mysql abfrage nach datum
Verfasst: 04.04.2014 19:34
von bluebull
sorry. hab mich unklar ausgedrückt. ich möchte das datum automatisch hochzählen (weiss leider nur nicht wie) und zu jedem datum die stunden ausgeben (wenn vorhanden). das ganze soll horizontal aufgelistet werden. --> ähnlich wie ein gantt chart
Re: mysql abfrage nach datum
Verfasst: 04.04.2014 19:38
von cYbercOsmOnauT
es zählt doch hoch.. oder meinst Du, Du willst zu jedem Datum die Gesamtzeit aller Projekte?
Code: Alles auswählen
<?php
$sql = "SELECT SUM(p.stunden) AS gesamt FROM projekte AS p
INNER JOIN zeiterfassung AS z ON p.id = z.projektID
GROUP BY z.datum
ORDER BY z.datum ASC";
$res = mysql_query($sql);
echo "<table border='1'>";
while($row = mysql_fetch_object($res))
{
echo "<tr>";
echo "<td>",$row->datum,"</td>";
echo "<td>",$row->gesamt,"</td>";
echo "</tr>";
Re: mysql abfrage nach datum
Verfasst: 04.04.2014 19:43
von bluebull
genau. und es sind nicht zu jedem datum einträge vorhanden zB Wochenende die Tage sollen aber trotzdem erscheinen. und das ganze soll eine ausrichtung von links nach rechts bekommen: links der projektname, oben die daten (datums

) fortlaufend und dann wie in einer tabelle die stunden.
................ datum (fortlaufend) -->
projekt ..... stunden
projekt2..... stunden
projekt3..... stunden
Re: mysql abfrage nach datum
Verfasst: 05.04.2014 12:38
von bluebull
Ich glaube was ich suche ist eine Kreuztabelle. Die Zeilen sollen die Projekte sein, die Spalten sollen das fortlaufende Datum sein. So sollen dann die Werte (Stunden) vom jeweiligen Tag dem Projekt zugeordner werden. Kann ich so was mit MySQL und PHP realisieren? Meine Abfrage steht im Moment bei
Code: Alles auswählen
<?php
$PROJEKTaktuell = "1";
$DATUMaktuell = "2014-04-01";
$sql = "SELECT *, SUM(stunden) AS gesamt FROM zeiterfassung, projekte WHERE projektID = '$PROJEKTaktuell' AND datum = '$DATUMaktuell'";
$res = mysql_query($sql);
echo "<table border='1'>";
echo "<tr>";
while($row = mysql_fetch_object($res))
{
echo "<tr>";
echo "<td>",$row->gesamt,"</td>";
echo "</tr>";
}
echo "</table>";
?>
***edit***
ich habe mal das Grundgerüst zusammen:
Code: Alles auswählen
<?php
//variablen per get übermitteln
$von = "2014-03-27";
$bis = "2014-04-04";
$mitarbeiter = "1";
// sql
echo "<table border='1'>";
echo "<tr><th colspan=1> projekte </th><th colspan=9> datum fortlaufend </th></tr>";
echo "<tr>";
echo "<td>"," ","</td>";
while ($von < $bis)
{
echo "<td>",$von = date('Y-m-d', strToTime('+1 day', strToTime($von))),"</td>";
}
echo "</tr>";
$sql = "SELECT * FROM projekte";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res))
{
echo "<td>",$row->name,"</td>";
echo "</tr>";
}
echo "</table>";
?>
Bin ich da auf dem richtigen Weg? Danke und Gruss