Hallo Leute, ich bin neu hier und wie so einige natürlich mit einem Problem, dass ich selber nicht lösen kann. Ich habe für unsere Firma ein Ticketsystem eingeführt. Jedem Ticketeintrag kann ein Flag gesetzt werden, wenn dieses berechenbar ist. Soweit so gut. Nun brauche ich eine Übersicht, pro Kunde mit allen Tickets mit dem Flag berechenbar. Meine Datenbank hat für diese Aufgabe zwei Tabellen.
Tabelle: Kunden
Tabelle: Tickets
Folgendes Ergebnis hätte ich gerne:
Mein Ansatz sehr ihr hier:
Das Ergebnis passt fast. Allerdings bekomme ich nun bei Kunde 1 und Kunde 2 jeweils alle berechenbaren Tickets von allen Kunden. Wo steckt mein Fehler?
Für eure Gedanken wäre ich sehr dankbar.
Tabelle: Kunden
kid | Name | Strasse | PLZ | Ort |
1 | Kunde 1 | Musterstr. 1 | 12345 | Entenhausen |
2 | Kunde 2 | Bahnhof 1 | 67890 | Stadt |
tid | Vorgang | Datum | Berechenbar | Dauer | aid |
1 | Problem 1 | 2019-01-02 | 1 | 10 | 1 |
2 | Problem 2 | 2019-01-03 | 0 | 20 | 1 |
3 | Problem 3 | 2019-01-03 | 1 | 30 | 2 |
4 | Problem 4 | 2019-01-04 | 1 | 40 | 2 |
Kunde 1 | |||
1 | Problem 1 | 10 | 2019-01-02 |
Kunde 2 | |||
3 | Problem 3 | 30 | 2019-01-03 |
4 | Problem 4 | 40 | 2019-01-04 |
PHP-Code:
$kunde = "SELECT DISTINCT k.kid,k.name,k.berechenbar,t.aid
FROM tickets t
LEFT JOIN kunden k ON k.kid = t.aid
WHERE t.berechenbar=1
ORDER BY k.kid";
$ticket = "SELECT t.datum,t.vorgang,t.dauer,t.aid,k.kid
FROM tickets t
LEFT JOIN kunden k ON k.kid = t.aid
WHERE t.berechenbar=1";
echo "<table>";
foreach ($pdo->query($kunde) as $zeile) {
echo "<tr>";
echo "<td>";
echo "<table>";
echo "<tr>";
echo "<td colspan='3'><strong>". $zeile['name'] ."</strong></td>";
echo "</tr>";
foreach ($pdo->query($ticket) as $ticketzeile) {
echo "<tr>";
echo "<td valign='top'>". $ticketzeile['datum'] ."</td>";
echo "<td valign='top'>". $ticketzeile['vorgang'] ."</td>";
echo "<td valign='top'>". $ticketzeile['dauer'] ."</td>";
echo "</tr>";
}
echo "</table>";
echo "</td>";
echo "</tr>";
}
echo "</table>";
Für eure Gedanken wäre ich sehr dankbar.
Kommentar