• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Spezielle Abfrage von MySQL

fox_bw

New member
Guten Abend zusammen,

ich habe ein Problem mit einer MySQL-Abfrage und komme nicht weiter.

Folgende Ausgangsituation:
Ich habe 1 Tabelle "Mitarbeiter" und 1 Tabelle "Projekte". Für die Zuordnung der Mitarbeiter zu den Projekten gibt es eine weitere Tabelle "Prj_Mitarb" (Verbindungstabelle), in der zum Teil eben mehrere Mitarbeiter einem Projekt zugeorndet werden. Das eintragen und schreiben in die Tabellen ist soweit alles klar.

Nun mein Problem:
Ich möchte dass in einem <select>-Feld alle Mitarbeiter anzeigt werden die für das aktuell ausgewählte Projekt (Projekt_ID wird übermittelt) noch nicht eingetragen sind. Diese Auswahl soll bewirken, dass ein Mitarbeiter für das Projekt nicht doppelt eingetragen werden kann.
Ich habe es mit einer verschachtelten while-Schleife probiert, indem ich als erstes in der Verbindungstabelle alle Eintragungen zur übermittelten Projekt_ID abgefragt habe. In einer 2. Abfrage habe ich dann versucht, dass er mir eben nur die Mitarbeiter anzeigt welche nicht in der Verbindungstabelle stehen.
Allerdings zeigt er bei dieser Konstellation nur den letzten gefunden Datensatz aus der Verbindungstabelle an, d.h. genau 1 Mitarbeiter wird nicht dargestellt.

Kann mir jemand bei meinem Problem weiterhelfen?
Vielen Dank im Voraus.

fox_bw
 
Ich habe es mit einer verschachtelten while-Schleife probiert, indem ich als erstes in der Verbindungstabelle alle Eintragungen zur übermittelten Projekt_ID abgefragt habe. In einer 2. Abfrage habe ich dann versucht, dass er mir eben nur die Mitarbeiter anzeigt welche nicht in der Verbindungstabelle stehen.
Dein Problem läßt sich mit reinem SQL lösen, z.B. über einen Subselect, eventuell auch über einen JOIN.
 
SELECT *
FROM Mitarbeiter
LEFT JOIN Prj_Mitarb ON Projekt_ID = {hier einsetzen} AND Mitarbeiter_ID = Mitarbeiter.id
WHERE Projekt_ID IS NULL
 
Hallo skooli,

vielen Dank für deine Antwort.
Genau diesen Code habe ich gesucht. Funktioniert nun alles wie gewollt.
Nochmals vielen Dank.
Auch der Beitrag von Albu war schon sehr hilfreich.

fox_bw
 
Zurück
Oben