Einzelnen Beitrag anzeigen

Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: Brauche dringend Hilfe bei SQL-Abfrage!

  Alt 2. Sep 2003, 14:47
Dein Datenbankmodell scheint nicht so prall zu sein.

Ich sehe in Schulungen_Ist eine ID 245 mit gleichem Namen
wie in Schulungen_Soll die mit ID 215.

Ok - kann Zufall sein oder ist die selbe gemeint?

Vorschlag

Tabelle 1: Schulungen
Felder: IdSchulungen,Bezeichnung etc.
Feld IDSchulungen als AutoIncrement (oder wie auch immer das in Access heisst)

Tabelle 2: Mitarbeiter
Felder: IdMitarbeiter,Name, etc
Feld IdMitarbeiter wieder Typ AutoIncrement

Tabelle 3: SchulungsSoll
Felder: IdSchulungsSoll,IdMitarbeiter,IdSchulungen,Termin. (Ende!)

Tabelle 4: SchulungsIst
Felder: IdSchulungsIst,IdMitarbeiter,IdSchulungen,Termin. (Ende!)

Dann kannst Du mit:
SQL-Code:
    select MA.*,
           S.Bezeichnung,
           SS.Termin
      from Mitarbeiter MA
inner join SchulungsSoll SS
        on SS.IdMitarbeiter = MA.IdMitarbeiter
inner join Schulungen S
        on S.IdSchulungen = SS.IdSchulungen
alle Mitarbeiter herausholen, die für Schulungen vorgesehen sind.
Willst Du z.B. nur einen Termin haben dann fügst Du hinten dran:
     where SS.Termin = 'Tag.Monat.Jahr' Alle Mitarbeiter, die schon fertig haben bekommst Du mit

SQL-Code:
    select MA.*,
           S.Bezeichnung,
           SI.Termin
      from Mitarbeiter MA
inner join SchulungsIst SI
        on SI.IdMitarbeiter = MA.IdMitarbeiter
inner join Schulungen S
        on S.IdSchulungen = SS.IdSchulungen
Den SchulungsStand des Mitarbeiters Nr 15 (Soll und Ist) erhältst Du z.B. so:
SQL-Code:
         select S.Bezeichnung,
                SS.Termin as Geplant,
                SI.Termin as Absolviert
           from Mitarbeiter MA
     inner join SchulungsIst SS
             on SS.IdMitarbeiter = MA.IdMitarbeiter
     inner join Schulungen S
             on S.IdSchulungen = SS.IdSchulungen
left outer join SchulungsIst SI
             on SI.IdMitarbeiter = MA.IdMitarbeiter
          where MA.IdMitarbeiter = 15
Das ganze funzt, wenn Access ANSI-SQL mitmacht.

Gruss
Tim Leuschner
  Mit Zitat antworten Zitat