2 Stimmen

Brauche Hilfe bei ungerader Access-Abfrage

Ich habe eine bestehende Access-Datenbank, die Schulungsunterlagen für Mitarbeiter enthält. Wenn ein Mitarbeiter eine Schulung absolviert hat oder für eine Schulung vorgesehen ist, gibt es einen Datensatz in der Verknüpfungstabelle. Wenn nicht, gibt es keinen Datensatz. Ich möchte alle Mitarbeiter abfragen, die zu einem bestimmten Thema nicht geschult wurden, aber es gibt keine Datensätze.

Die Datenbank sieht folgendermaßen aus:

Table: Trainings   
TrainingID    AutoNumber   
Description   Text   
...

Table: EmployeeTrainings
EmployeeTrainingID     AutoNumber   
TrainingID             Number
EmployeeID             Number
ScheduledDate          Date/Time
...

Table: Employees  
EmployeeID       Number  
FullName         Text  
...

Ich möchte ein Ergebnis wie das folgende mit den folgenden Feldern für Mitarbeiter, die nicht an einer bestimmten Schulung teilnehmen:

Schulungen.Beschreibung, Mitarbeiter.VollständigerName, EMployeeTrainings.GeplantesDatum

Wie kann ich das erreichen? Ich brauche eine Anleitung.

2voto

DRapp Punkte 45486

Ich denke, das sollte Ihnen genügen... Da sie jedoch noch nicht ausgebildet wurden, können wir kein Ausbildungsdatum für sie festlegen, daher habe ich nur die beiden Spalten eingefügt...

select
      t.Description,
      emp.FullName,
      et.ScheduledDate
   from
      trainings t
         join employees emp
            left join EmployeeTrainings et
               on emp.EmployeeID = et.EmployeeID
               AND et.TrainingID = t.TrainingID
   where
      t.TrainingID IN ( 1, 3 )
   order by
      t.Description,
      emp.FullName

Damit sollten Sie bekommen, was Sie wollen ... durch einen LEFT JOIN, gibt es alle Einträge auf der linken Seite der Verknüpfung mit Datensätzen auf der rechten Tabelle. Wenn keine solchen Datensätze auf der rechten Seite vorhanden sind (also die Mitarbeiter, die nie terminiert wurden), wird ihr Terminwert als NULL ausgegeben... Für diejenigen, die eine Übereinstimmung gefunden haben, werden ihre Daten in die Ergebnismenge aufgenommen. Ich bin mir über die "Access"-Syntax der IN-Klausel nicht sicher, aber es MUSS so funktionieren, wie es in anderen SQL-Engines der Fall wäre.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X