Folgendes Problem:
Ich möchte aus sicht eines Tickets alle Verwalter angezeigt bekommen, die entweder Mitglied der ausgewählten Kategorie sind, oder schon dem Ticket zugeordnet sind.
Die Tabellen sehen wie folgt aus:
Das ganze habe ich dann Versucht so Abzufragen:
Mein Problem ist, dass es so nicht ganz funktioniert. Denn ich bekomme ab und zu den falschen Zustand gelieft oder auch nicht den Kriterien entsprechende Verwalter. Ich denke ich weiss auch wieso: Denn wenn ich das GROUP BY Weg lasse, bekomme ich sehr oft einen/mehrere Verwalter 5-10 fach angezeigt, mit unterschiedlichen ZUSTAND.
Ich habe es auch mal ohne JOINS Versucht, aber gleiches Problem, sobald ich noch den zweiten geklammerten Ausdruck dazunehme.
Wäre super wenn jemand eine Idee hätte, denn ich stecke da im moment voll fest.
Ich habe auch nochmal eine Bild mit den Tabellen-Verknüpfungen angehängt, damit es etwas übersichtlicher ist.
Gruß,
Thomas
Ich möchte aus sicht eines Tickets alle Verwalter angezeigt bekommen, die entweder Mitglied der ausgewählten Kategorie sind, oder schon dem Ticket zugeordnet sind.
Die Tabellen sehen wie folgt aus:
PHP-Code:
mysql> DESCRIBE `tickets_kategorie`;
+--------------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------------------+------+-----+---------+-------+
| TICKET_ID | int(10) unsigned | NO | PRI | 0 | |
| KATEGORIE_ID | smallint(5) unsigned | NO | PRI | 0 | |
| ZUSTAND | enum('j','n') | NO | | n | |
+--------------+----------------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> DESCRIBE `verwalter_kategorie`;
+--------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------------+------+-----+---------+-------+
| VERWALTER_ID | tinyint(4) unsigned | NO | PRI | 0 | |
| KATEGORIE_ID | tinyint(4) unsigned | NO | PRI | 0 | |
| ZUSTAND | enum('j','n') | NO | | | |
+--------------+---------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> DESCRIBE `tickets_bearbeiter`;
+--------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------------+------+-----+---------+-------+
| TICKET_ID | int(10) unsigned | NO | PRI | | |
| VERWALTER_ID | tinyint(3) unsigned | NO | PRI | | |
| ZUSTAND | enum('j','n') | NO | | | |
+--------------+---------------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
PHP-Code:
$sql = "SELECT `verwalter`.`VERWALTER_ID`, `verwalter`.`NAME`, `tickets_bearbeiter`.`ZUSTAND`
FROM `verwalter`
INNER JOIN `verwalter_kategorie` ON `verwalter`.`VERWALTER_ID` = `verwalter_kategorie`.`VERWALTER_ID`
INNER JOIN `tickets_kategorie` ON `tickets_kategorie`.`KATEGORIE_ID` = `verwalter_kategorie`.`KATEGORIE_ID`
INNER JOIN `tickets_bearbeiter` ON `tickets_bearbeiter`.`VERWALTER_ID` = `verwalter`.`VERWALTER_ID`
WHERE (`verwalter_kategorie`.`ZUSTAND` = 'j'
AND `tickets_kategorie`.`TICKET_ID` = '".$_GET['id']."'
AND `tickets_kategorie`.`ZUSTAND` = 'j')
OR (`tickets_bearbeiter`.`ZUSTAND` = 'j'
AND `tickets_bearbeiter`.`TICKET_ID` = '".$_GET['id']."')
GROUP BY `verwalter`.`NAME`
ORDER BY `verwalter`.`NAME` ASC"
Ich habe es auch mal ohne JOINS Versucht, aber gleiches Problem, sobald ich noch den zweiten geklammerten Ausdruck dazunehme.
PHP-Code:
$sql = "SELECT `verwalter`.`VERWALTER_ID`, `verwalter`.`NAME`
FROM `verwalter`, `verwalter_kategorie`, `tickets_bearbeiter`, `tickets_kategorie`
WHERE (`tickets_kategorie`.`TICKET_ID` = '".$_GET['id']."'
AND `tickets_kategorie`.`ZUSTAND` = 'j'
AND `verwalter_kategorie`.`KATEGORIE_ID` = `tickets_kategorie`.`KATEGORIE_ID`
AND `verwalter`.`VERWALTER_ID` = `verwalter_kategorie`.`VERWALTER_ID`
AND `verwalter_kategorie`.`ZUSTAND` = 'j'
OR (`tickets_bearbeiter`.`TICKET_ID` = '".$_GET['id']."'
AND `tickets_bearbeiter`.`ZUSTAND` = 'j'
AND `verwalter`.`VERWALTER_ID` = `tickets_bearbeiter`.`VERWALTER_ID`)
GROUP BY `verwalter`.`NAME`
ORDER BY `verwalter`.`NAME` ASC"
Ich habe auch nochmal eine Bild mit den Tabellen-Verknüpfungen angehängt, damit es etwas übersichtlicher ist.
Gruß,
Thomas
Kommentar