AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Brauche dringend Hilfe bei SQL-Abfrage!
Thema durchsuchen
Ansicht
Themen-Optionen

Brauche dringend Hilfe bei SQL-Abfrage!

Ein Thema von jschade · begonnen am 2. Sep 2003 · letzter Beitrag vom 2. Sep 2003
Antwort Antwort
jschade

Registriert seit: 11. Jul 2003
Ort: Hamburg
62 Beiträge
 
#1

Brauche dringend Hilfe bei SQL-Abfrage!

  Alt 2. Sep 2003, 13:00
hi leute,

hab 'n riesiges problem. komm nämlich mit ner abfrage nicht weiter.

hab bereits 2 abfragen (in access), als deren ergebnis ich die beigefügten tabellen "Soll"(schulungen, die mitarbeiter haben sollen) und "Ist"(schulungen,die mitarbeiter haben) bekomme.

jetzt will ich die schulungen herausfiltern, die die mitarbeiter noch besuchen müssen...

bekomme aber die abfrage nicht hin. kann mir da evtl. jemand von den datenbank-profis zur seite stehen?

mfg jan
Miniaturansicht angehängter Grafiken
schulungen_ist.jpg   schulungen_soll.jpg  
  Mit Zitat antworten Zitat
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, 13: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
malloc
(Gast)

n/a Beiträge
 
#3

Re: Brauche dringend Hilfe bei SQL-Abfrage!

  Alt 2. Sep 2003, 13:48
Ich Müsste jetzt mal genau die Statements sehen, aber ich denke es geht mit NOT EXISTS.

z.B. so:

Code:
SELECT Soll.Schulung_ID
FROM Soll
WHERE NOT EXISTS
(SELECT Ist.Schulung_ID FROM Ist WHERE Ist.Schulung.ID = Soll.Schulung_ID)
Ich denke das sollte dir als Beispiel weiterhelfen.
  Mit Zitat antworten Zitat
jschade

Registriert seit: 11. Jul 2003
Ort: Hamburg
62 Beiträge
 
#4

Re: Brauche dringend Hilfe bei SQL-Abfrage!

  Alt 2. Sep 2003, 14:21
Zitat von Leuselator:
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?
sieht auf den ersten blick so aus, könnte jemand mit mehr erfahrungen als ich mit sicherheit auch beweisen.

die tabellen sind wie gesagt ergebnisse aus abfragen. ich habe schulungen mit gleichem namen, aber mit mehreren verschiedenen terminen pro schulungsname, deshalb auch verschiedene ID's. aus diesem grund muss ich den abgleich auch über den namen finden, da die ID hier nicht eindeutig ist...

muss mir mal deinen tipp weiter anschauen, kann aber ein wenig dauer, bin nicht so das sql-ass
  Mit Zitat antworten Zitat
jschade

Registriert seit: 11. Jul 2003
Ort: Hamburg
62 Beiträge
 
#5

Re: Brauche dringend Hilfe bei SQL-Abfrage!

  Alt 2. Sep 2003, 14:45
Zitat von malloc:
Ich Müsste jetzt mal genau die Statements sehen, aber ich denke es geht mit NOT EXISTS.
mmhh...

also mit dieser abfrage bekomme ich die werte, die in beiden tabellen vorkommen...

Code:
SELECT Soll.MA_ID, Ist.Name
FROM Ist, Soll
WHERE (((Ist.MA_ID)=[Soll].[MA_ID]) AND ((Ist.Name)=[Soll].[Name]));
... im beispiel wären das:

MA_ID = 1
Name = Konfliktmanagement

... d.h. mein mitarbeiter mit der ID = 1 braucht die Schulung Konfliktmanagement und hat diese auch schon absolviert.

Jetz brauch ich aus der Tabelle "Soll" alle einträge ausser denen wo MA_ID und Name mit dem ergebnis meiner abfrage übereinstimmen. wichtig!: ich brauch das alles in einer abfrage
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

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

Re: Brauche dringend Hilfe bei SQL-Abfrage!

  Alt 2. Sep 2003, 15:25
SQL-Code:
select *
  from Mitarbeiter MA,
       Soll S
where MA.MA_ID = S.MA_ID
  and MA.MA_ID not in (SELECT Soll.MA_ID
                         FROM Ist, Soll
                        WHERE (
                              (
                              (Ist.MA_ID)=[Soll].[MA_ID]
                              ) AND (
                              (Ist.Name)=[Soll].[Name])
                              )
                       )
Macht Access das mit?
Tim Leuschner
  Mit Zitat antworten Zitat
jschade

Registriert seit: 11. Jul 2003
Ort: Hamburg
62 Beiträge
 
#7

Re: Brauche dringend Hilfe bei SQL-Abfrage!

  Alt 2. Sep 2003, 15:26
i hob's

also mit dieser abfrage bekomme ich nur die datensätze, die in der Soll- aber nicht in der Ist-Tabelle vorkommen:

Code:
SELECT Soll.MA_ID, Soll.Name
FROM Soll LEFT JOIN Ist ON (Soll.Name = Ist.Name) AND (Soll.MA_ID = Ist.MA_ID)
WHERE (((Ist.Name) Is Null));
trotzdem vielen dank für eure bemühungen...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz