Einzelnen Beitrag anzeigen
  #1  
Alt 27.02.2015, 22:36:01
basementmedia basementmedia ist offline
Anfänger
 
Registriert seit: Feb 2015
Alter: 41
Beiträge: 11
Inner join zweimal mit der gleichen Tabelle

Hallo zusammen,

ich bin neu hier im Forum also erstmal "Hallo" an alle ;-)

Ich bin zwar kein Mysql-Newie mehr aber komm bei der folgenden Sache einfach ned weiter und hoffe, ihr könnt mir helfen:

Ich habe 4 Tabellen:

"Mitglieder"
In dieser Tabelle sind die Daten von Mitgliedern eines Vereins erfasst.
Die Tabelle hat u.a. die Spalten "Vorname" und "Nachname"

"Leistungen"
In dieser Tabelle sind verschiedene Leistungen definiert, die von den Mitgliedern für andere Mitglieder geleistet werden können
Die Tabelle hat u.a. die Spalte "Bezeichnung"

"Mitglieder_Leistungen"
In dieser Tabelle ist erfasst, welches Mitglied welche Leistungen anbietet bzw. benötigt.
Die Tabelle hat u.a. die Spalten
"mitglied_id" (= ID des Mitglieds, das die Leistung anbietet bzw. benötigt),
"leistung_id" (= ID der Leistung),
"leistungsart_id" (=ID der Leistungsart, 1=Angebot, 2=Nachfrage)

"Leistungsliste"
Über diese Tabelle werden Anbieter und Nachfrager miteinander "verheiratet".
Die Tabelle hat u.a. die Spalten
"mitglieder_leistungen_id" (=ID der nachgefragten Leistung)
"mitglieder_id" (=ID des Mitglieds, dass sich dazu bereit erklärt hat, die Leistung durchzuführen).

Soviel zum Aufbau der Datenbank. Evtl. wäre es leichter gewesen eine Extra Tabelle für Leistungsangebote und für Leistungsnachfragen zu machen, ich habe eben alles in eine Tabelle (nämlich "Mitglieder_Leistungen") gepackt und über die Spalte "Leistungsart_id" die Art der Leistung (also Angebot oder Nachfrage) unterschieden. Sollte ja auch ok sein.

Zur eigentlichen Frage:
Nun habe ich in der Tabelle "Leistungsliste" ein paar Einträge drin stehen und möchte mir nun eine Ergebnistabellle ausgeben lassen, die wie folgt aussieht

Leistung Leistungsnehmer Leistungsgeber

Das Ergebnis der Spalte Leistung soll natürlich nicht die Spalte "Leistung_id" der Tabelle "Mitglieder_Leistungen" sein, sondern der entsprechende Wert aus der Tabelle "Leistungen". Dies lässt sich ja einfach bewerkstelligen durch "INNER JOIN leistungen ON mitglieder_leistungen.leistung_id = leistungen.ID".

Aber im Fall der Ergebnisse der Spalten Leistungsnehmer und Leistungsgeber wirds schon schwieriger und ich komm nicht weiter.
Wenn ich nur "INNER JOIN mitglieder ON leistungsliste.mitglied_id = mitglieder.ID mache, habe ich ja nur den Leistungsgeber. Den Namen des Leistungsgebers bekomme ich aber nur über den Umweg über "leistungsliste.mitglieder_leistungen_id" --> "Mitglieder_Leistungen.mitglied_id" --> mitglieder.ID

Lässt sich eine Inner Join über zwei "Unterverschachtelungen" bewerkstelligen (mir fällt grad kein besseres Wort ein, ich muss ja erst in die eine Tabellle und da dann in die andere Tabelle rein). Und selbst wenn es klappt, bräuchte ich ja zwei unterschiedliche Alias, da ja beides Mal die Tabelle "Mitglieder" referriert wird und ich in der Ergebnistabelle ja dann unterschiedliche Spalten "Leistungsgeber" und "Leistungsnehmer" brauche.

Puh, sorry für soviel Text...
Hoffe irgendjemand versteht die Aufgabestellung und kann mir weiterhelfen ;-(

Viele Grüße

Basement
Mit Zitat antworten