Announcement

Collapse
No announcement yet.

SQL Abfrage Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Abfrage Problem

    Ich habe ein Problem bei einer SQL Abrage. Bekomm das einfach nicht hin, hoff es geht überhaupt.

    Es geht um Mitarbeiterqualifikation. Ich versuchs mal zu erklären und lass dabei irrelevante Daten mal weg.

    Es gibt Mitarbeiter und es gibt Qualifikationen. Bei allen Abteilungen bis auf einer ist das kein Problem.
    Grundsätzlich habe ich eine Tabelle angelegt, Qualifikationsstand. Da steht drin, welche Mitarbeiter ID, welche Qualifikations ID und die Qualifikation auch mit ID.

    Die Daten bereite ich in einer Access.adp auf. Es sollte wie vorher in Excel halt so ne Übersicht werden. Dann hab ich als Prozdur auf dem SQL Server folgendes gemacht (verkürzte Version):

    Code:
    SELECT Name,
    	SUM(CASE[Quali_ID] WHEN '237' THEN QualiStand ELSE 0 END) AS 'Sicherheitsbeauftragter',
    	SUM(CASE[Quali_ID] WHEN '238' THEN QualiStand ELSE 0 END) AS 'Abwasserbeauftragter',
    	SUM(CASE[Quali_ID] WHEN '239' THEN QualiStand ELSE 0 END) AS 'Gefahrgutbeauftragter',
    	SUM(CASE[Quali_ID] WHEN '240' THEN QualiStand ELSE 0 END) AS 'Sicherheitsfachkraft',
    	SUM(CASE[Quali_ID] WHEN '242' THEN QualiStand ELSE 0 END) AS 'Abfallbeauftragter',
    	SUM(CASE[Quali_ID] WHEN '243' THEN QualiStand ELSE 0 END) AS 'Immissionsschutzbeauftragter',
    	SUM(CASE[Quali_ID] WHEN '245' THEN QualiStand ELSE 0 END) AS 'Brandschutzbeauftragter',
    	SUM(CASE[Quali_ID] WHEN '247' THEN QualiStand ELSE 0 END) AS 'Datenschutzbeauftragter',
    	SUM(CASE[Quali_ID] WHEN '248' THEN QualiStand ELSE 0 END) AS 'Verladung Gefahrgut',
    	SUM(CASE[Quali_ID] WHEN '249' THEN QualiStand ELSE 0 END) AS 'Ladungssicherung',
    	SUM(CASE[Quali_ID] WHEN '250' THEN QualiStand ELSE 0 END) AS 'Erste Hilfe Kurs',
    	SUM(CASE[Quali_ID] WHEN '61' THEN QualiStand ELSE 0 END) AS 'Grundkenntnisse EDV/MS-Office',
    	SUM(CASE[Quali_ID] WHEN '62' THEN QualiStand ELSE 0 END) AS 'Kenntnisse Unternehmensaufbau, Ziel und Leitbild'
    	FROM Tabelle_QualifikationsStand
    Dann kommt noch ein Right Join, where, group by,... aber das interessiret jetz eigentlich net, das funktioniert ja.

    Das führt z.B. zu folgendem Ergebnis:

    Mitarbeiter--Sicherheitsbeauftragter---Abwasserbeauftragter-------...
    ----XY-------------------3----------------------------4--------------------...

    Soweit so gut. Aber für eine Abteilung soll ich das jetz erweitern, weil da Schulungen in bestimmten Abständen stattfinden und da soll für jede eintragbar sein, wann diese ist, z.B. 07/2013.

    Gut Tabelle Qualifikationsstand mit einer varchar Spalte erweitert. Jetzt hat diese Tabelle oben eben ne Spalte mehr, aber diese muss mit in meiner Abrage berücksichtigt werden.
    Denke mal, es könnte über eine Unterabfrage laufen nach jedem Case, aber irgendwie bekomm ich s halt net hin.

    Ergebnis der Abrage, wie ich es mir wünschen würde, wäre:

    Mitarbeiter--Sicherheitsbeauftragter-Sicherheitsbeauftragter/NächsteSchulung ...
    ---XY------------------- 3----------------------7/2013---------------------------------...

    Und eben so fortgesetzt wie oben. Hoff mir kann jemand helfen und das ist machbar.

    Vielen Dank fürs Lesen schonmal.

  • #2
    Dann brauchst Du eine weitere Tabelle mit Schulungsterminen und Zuordnung zur Qualifikation.
    Da Du nichts darüber geschrieben hast, wann ein Mitarbeiter an welcher Schulung teilnimmt, offenbar aber mehrere Termine für eine Schulung verfügbar sind (und ggF. auch mehrere Qualifikationen pro Mitarbeiter), kann man dazu ohne weitere Angaben wenig sagen.

    Gibt es nur jeweils einen Termin je Qualifikation, kannst Du das Feld einfach mit dazunehmen und gruppieren.
    Gruß, defo

    Comment

    Working...
    X