Durch Ergebnismenge iterieren?!

starbug2021

Neuer Benutzer
Beiträge
2
Hallo Zusammen,

das ist mein erster Eintrag und leider konnte ich keine Antwort zu meinem Problem finden.

Folgendes, ich habe zwei Tabellen (Mitarbeiter, Kunde) und führe folgendes Statement aus:

select Mitarbeiter_name, Mitarbeiter_vorname, kunde_name, kunde_vorname
from table_mitarbeiter m, table_kunde k
where m.id = k.mitarbeiter_id;

Das Ergebnis sieht jetzt ungefähr so aus:

Mitarbeiter_name | Mitarbeiter_vorname | kunde_name | kunde_vorname

Peter | Müller | Hans | Meier

Thomas | Meier | Hans | Meier

Klaus | Schulz | Hans | Meier

Steffi | Schmidt | Dieter | Schuster


Die IDs zu den Mitarbeitern und Kunden habe ich jetzt mal zur Übersicht weggelassen.

Ich möchte jetzt gerne alle Mitarbeiter anzeigen lassen, die denselben Kunden haben, also in diesem Fall "Hans Meier". Wie kann ich das nun realisieren? Kann ich irgendwie durch die Ergebnismenge iterieren? Es sollte nämlich allgemeingültig sein und nicht wie "select ... from ... where kunde_name = 'Meier' ".

Ist das in SQL überhaupt möglich oder muss ich da schon PL/SQL anwenden?

Danke schon mal im Voraus.

Sorry übrigens für meine Formatierungen, ich bekomme das demnächst bestimmt besser hin :).
 
Werbung:
3 Dinge:

  • Du änderst das von implizietn JOIN auf expliziete JOIN. Also, google nach JOIN-Syntax und wende diese an
  • das wird dazu führen, daß Du für Deine obige Abfrage zunächst keine WHERE-Condition mehr brauchst. Du kannst nun WHERE verwenden, um auf den Kunden zu filtern
  • in der Hilfe zum Forum findest Du die passende Syntax, um Code oder Aufzählungen und andere Dinge gescheit zu formatieren.

Willkommen im Forum!
 
Werbung:
Hallo,

danke für die schnelle Antwort.

Ich habe mich mit dem Thema JOINS befasst und mir folgendes überlegt. Die Ergebnismenge des oben genannten Beispiels besteht eigentlich aus mehr Spalten und wird aus fünf Tabellen erstellt.

Also habe ich mir übrlegt dass ich diese Abfrage als View speichern kann und darauf einen SELF-JOIN mache, also so:

Code:
select distinct v1.mitarbeiter_name, v1.mitarbeiter_vorname, v1.kunde.name, v1.kunde.vorname from view_mitarbeiterKunde v1
inner join view_mitarbeiterKunde v2
on v1.mitarbeiter_name != v2.mitarbeiter_name
where v1.kunde_name = v2.kunde_name
and v1.kunde_vorname = v2.kunde_vorname;

Es funktioniert, allerdings nur mit dem "distinct", sonst bekomme ich doppelte Ergebnisse. Allerdings habe ich das Gefühl dass die Abfrage ein wenig lange läuft. Views kann man aber doch eigentlich ohne Problemem verwenden oder?

Gruß
 
Zurück
Oben