OTRS mailing lists
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview
newer
bearbeitungszeit von tickets

AW: [otrs-de] SQL Statement

older
SQL Statement

Tomas Müller

19 Nov 2003 19 Nov '03
3:39 p.m.

Hallo Jürgen, wir haben auch schon ein paar Listen für die Agents erstellt. Hier die Datenbank-Abfrage in PhP-Code : /** * Document::gen_agent_list() * * { Erstellt die eigentliche Abrechnung für einen Agent für einen * bestimmten Zeitraum } * * @param [String] $agent_id * @param [String] $jahr * @param [String] $monat * @return $agent_list -> Multidimensionales Array mit den Informationen * fuer die Erzeugung der Accountig-Informationen * des Agents. */ function gen_agent_list($agent_id, $jahr, $monat) { $agent_name = get_agent_from_id($agent_id); $conn = do_connect(); /* Performing SQL query */ /* hier wirds kniffelig. Zuerst muss ein MySQL konformes Anfangs und End-Datum erzeugt werden. [yyyy-MM-DD HH:MM:SS] */ $begin_date = date("Y-m-d H:i:s", mktime(0,0,0,$monat,1,$jahr)); $end_date = date("Y-m-d H:i:s", mktime(0,0,0,$monat+1,1,$jahr)); /* fuer die Agent Liste werden nur Datum, Kundennummer und die Stunden benoetigt */ $query = "SELECT time_accounting.create_time, time_accounting.time_unit,ticket.customer_id, ticket.tn, ticket.id "; $query = $query." FROM time_accounting,ticket where (time_accounting.create_by='$agent_id') AND (time_accounting.create_time>'$begin_date')"; $query = $query." AND (time_accounting.create_time<'$end_date') AND (ticket.id=time_accounting.ticket_id)"; $query = $query." ORDER BY ticket.customer_id, LEFT(time_accounting.create_time,10)"; $result = mysql_query($query) or die("Datenbankabfrage ist fehlgeschlagen!"); /* */ while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { $datum = date( "d.m.Y", strtotime ($line['create_time'])); $time_unit = $line['time_unit']/60; $kunden_nummer = $line['customer_id']; $ticket_number = $line['tn']; $ticket_id = $line['id']; $agent_list[] = array($datum, $kunden_nummer, $ticket_number, $time_unit, $ticket_id); } /* Free resultset */ mysql_free_result($result); /* Closing connection */ mysql_close($conn); return $agent_list; } Angezeigt wird die Liste hiermit : if (session_id_valid($_COOKIE['Session']) != TRUE) { die ("Ihre Session-ID ist ungültig. Login nur über Agent-Oberfläche möglich<br>"); } $agent_id = $_POST['Agent']; $jahr = $_POST['Jahr']; $monat = $_POST['Monat']; $agent_name = get_agent_from_id($agent_id); printf ("<center><H2>Auswertung für %s</h2></center>", $agent_name); $agent_list = gen_agent_list($agent_id, $jahr, $monat); gen_HTML_table($agent_list, "Liste aller Wartungs- und Servicetätigkeiten" ); function gen_HTML_table( $agent_list, $ueberschrift ) { $gesamt_stunden = 0; /* Summenzähler für die Gesamtstunden */ $stunden_pro_tag_pro_kunde = 0; /* Summenzähler für die Stunden pro Tag pro Kunde */ $datum = "nix"; /* Zwischenspeicher um den Datumswechsel zu erkennen, * Vorbelegt mit "nix" um die Erkennung des ersten Durchlaufs * zu erleichtern */ $customer_id = "nix"; /* Zwischenspeicher um den Wechsel des Custumers zu erkennen */ print "<center>"; printf ("

"); print "<colgroup> </colgroup>"; print "<tr>
$ueberschrift</td></tr>"; print "<th>Kunden-Nummer</th><th>Datum </th><th>Ticket #</th>\n"; print "<th>Stunden</th>\n"; /* Überpruefen, ob dieses Array gefüllt ist. Wenn nein, wird in das Stunden-Feld "keine" eingetragen */ if (sizeof($agent_list) < 1) { printf ("<tr>\n"); printf ("<td> </td><td> </td><td> </td>"); printf (" Keine </td>\n"); printf ("</tr>\n"); } else { foreach ($agent_list as $one_line) { $gesamt_stunden = $gesamt_stunden + $one_line[3]; /* Es folgt die Gruppierung pro Kunde pro Tag, das angelieferte Array muss vorsortiert sein, damit ein Gruppenwechsel erkannt werden kann */ if ((($datum == $one_line[0]) AND ($customer_id == $one_line[1])) OR ($datum == "nix")) { /* Erster Durchlauf, oder gleicher Kunde gleicher Tag */ $stunden_pro_tag_pro_kunde = $stunden_pro_tag_pro_kunde + $one_line[3]; } else /* Neuer Kunde, oder neuer Tag */ { /* Ausgeben der Zwischensumme pro Kunde pro Tag*/ printf ("<tr>Stunden</td>%01.2f</td></tr>",$stunden_pro_tag_pro_kunde) ; $stunden_pro_tag_pro_kunde = $one_line[3]; } $datum = $one_line[0]; $customer_id = $one_line[1]; printf ("<tr>\n"); printf ("%s</td>\n",$one_line[1]); /* Kunde */ printf ("%s</td>\n",$one_line[0]); /* Datum */ printf ("%s</a></td>\n",$one_line[4],$one_line[2]); /* Ticket # */ printf ("%01.2f</td>\n", $one_line[3]); /* Aufwand */ printf ("</tr>\n"); } } /* Ausgeben der Zwischensumme pro Kunde pro Tag*/ printf ("<tr>Stunden</td>%01.2f</td></tr>",$stunden_pro_tag_pro_kunde) ; /* Ausgeben der Gesamtstunden des Monats */ printf ("<tr>Gesamtstunden</td>%01.2f</td></tr>",$gesamt_stunden) ; print "</table>\n"; print "</center>"; print "<br><br><br>"; } Gruss Tomas cimt ag ------------------------------------------------------------------------ Unter den Eichen 128 - 12203 Berlin fon: +49.30.834098-0 fax: -22 mobil: +49.178.7270777 email: Tomas.Mueller@cimt-ag.de http://www.cimt-ag.de

...

-----Ursprüngliche Nachricht----- Von: Juergen Meurer [mailto:meurer@bad-gmbh.de] Gesendet: Mittwoch, 19. November 2003 16:12 An: User questions and discussions about OTRS in German. Betreff: [otrs-de] SQL Statement

Hallo,

da ich leider durch die Struktur der Tabellen noch nicht durchblicke ....

Wie sieht eine Abfrage aus um die aufgewendete Zeit pro Bearbeiter pro Monat herauszubekommen.

Wenn die antwortet zu einfach sein sollte und keinen anderen interessiert eventuell per PM. -- Mit freundlichen Grüßen Jürgen Meurer ---------------------------------------------------- BAD GmbH Herbert-Rabius-Str. 1 53225 Bonn Tel: 0228/40072-70 Email: meurer@bad-gmbh.de

0 0
Reply
Sign in to reply online Use email software

Show replies by date

7911
Age (days ago)
7911
Last active (days ago)

List overview

Download

0 comments
1 participants

Add to favorites Remove from favorites

tags

participants (1)

  • Tomas Müller

HyperKitty Powered by HyperKitty version 1.3.9.