MySQL Probleme mit Join

atlantyz

Erfahrenes Mitglied
Hallo Leute,

ich habe ein Problem mit einer Join Abfrage bei MySQL.

Also: ich habe mehrere Tabellen, die ich über inner join und left join verknüpfe. Nun muss ich aber die Haupttabelle (ticket) zweimal mit einer anderen Tabelle verknüpfen... und zwar einmal um den Ersteller des Tickets zu bekommen und zum anderen Mal den Bearbeiter. Bearbeiter und Ersteller werden in der Tabelle bearbeiter gespeichert.

Nun bekomme ich es nicht hin, zweimal die bearbeiter-Tabelle einzufügen.

Hier meine Lösungsideen (funktionieren alle nicht):

Code:
select ticket.*, bearbeiter.* from ((ticket inner join bearbeiter on ticket.ersteller = bearbeiter.bearb_id) left join bearbeiter on ticket.bearbeiter = bearbeiter.bearb_id) where ticket_id =4
Fehlermeldung: #1066 - Not unique table/alias: 'bearbeiter'

Also hab ich, da bearbeiter wohl nicht doppelt vorkommen darf, folgendes versucht:

Code:
select ticket.*, bearb.* from ((ticket inner join bearbeiter as ersteller on ticket.ersteller = ersteller.bearb_id) left join bearbeiter as bearb on ticket.bearbeiter = bearb.bearb_id) where ticket_id =4
Ergebnis: er gibt nur den Bearbeiter aus, nicht den Ersteller

Ich hab einfach keine Idee mehr, wie der mir sowohl Ersteller als auch Bearbeiter ausgibt. Vielleicht noch so als Anmerkung: das Feld Ersteller ist nie null, der Bearbeiter kann auch null sein, dann soll er mir einfach nix anzeigen.

Gruß Joey
 
Das Problem das sich ergibt ist dass du nicht so einfach mit dem * arbeiten kannst. Ersteller und Bearbeiter haben die gleichen Spaltennamen. Wenn du beide unter gleichem Namen selektierst bekommst du Probleme.
Versuch mal folgendes:

select ticket.*, ersteller.SPALTENNAME AS name1, ... ,bearb.* from
((ticket inner join bearbeiter as ersteller on ticket.ersteller = ersteller.bearb_id)

left join bearbeiter as bearb on ticket.bearbeiter = bearb.bearb_id) where ticket_id =4

ticket kannst du mit * selektieren. Für bearb und ersteller musst die einen von beiden aussuchen für den du dann für jede zu selektierende Spalte n Alias vergibst.
 
Zurück