Antworten auf deine Fragen:
Neues Thema erstellen

SQL-Server Nicht zugeordnete Eintragungen finden

didi01

Aktives Mitglied

Hallo zusammen,

in meiner SQL Server DB werden den Mitarbeitern Berechtigungen zugeordnet.
Hierzu gibt es 3 Tabellen.
1. personal (Hier sind die Personalstammdaten abgespeichert)
2. personal_berechtigungen (Hier sind die zugeordneten Berechtigung gespeichert)
3. personal_standard_berechtigungen (Hier werden alle verfügbaren Berechtigungen gespeichert)

Mit der folgenden Abfrage bekomme ich zum Beispiel alle Berechtigungen angezeigt die dem Mitarbeiter mit der pers_id '50' zugeordnet sind.

PHP:
SELECT personal.pers_id, personal_berechtigungen.gueltig_ab, personal_standard_berechtigungen.berechtigungsart,
       personal_standard_berechtigungen.ber_id
FROM personal INNER JOIN
     personal_berechtigungen ON personal.pers_id = personal_berechtigungen.pers_id INNER JOIN
     personal_standard_berechtigungen ON personal_berechtigungen.b_id = personal_standard_berechtigungen.ber_id
WHERE  (personal.pers_id = '50')

Nun möchte ich aber eine Abfrage machen, die mir als Ergebnis die Standard Berechtigungen anzeigt, die den einzelnen Mitarbeitern nicht zugeordnet sind.

Hat jemand eine Idee wie ich die Abfrage anpassen muss?

Vielen Dank im Voraus
GRuß
didi01
 

Fugel

rebmeM

PSD Beta Team
Nimm es mir bitte nicht übel, aber rück doch bitte mal mit mehr Informationen raus, wenn du einen Beitrag erstellst und Hilfe benötigst ;) Es ist ohne genauen Aufbau deiner Tabellen, recht schwierig eine Auskunft zu geben.
 

didi01

Aktives Mitglied

@Fugel

Nimm es mir bitte nicht übel, aber rück doch bitte mal mit mehr Informationen raus, wenn du einen Beitrag erstellst und Hilfe benötigst ;) Es ist ohne genauen Aufbau deiner Tabellen, recht schwierig eine Auskunft zu geben.

Du hast ja recht:) Ich komme heute nicht mehr dazu Dir die Tabellenstruktur zu kopieren weil ich jetzt weg muss. Ich werde das dann morgen früh machen. Ich bin ja froh das Du mir helfen willst.

Gruß
didi01
 

msa1989

Bin da

Hi Didi01,

ich gehe davon aus dass du in der Tabelle 'personal_standard_berechtigungen' alle Berechtigungen drin hast um die es geht. Das heißt du musst dir aus dieser Tabelle alle Berechtigungen rausziehen die dem Benutzer nicht zugewiesen sind.
Code:
SELECT psb.ber_id
FROM personal_standard_berechtigungen psb
WHERE psb.ber_id NOT IN (
  SELECT
  psb_i.ber_id
  FROM personal p
  INNER JOIN personal_berechtigungen pb ON p.pers_id = pb.pers_id
   INNER JOIN personal_standard_berechtigungen psb_i ON pb.b_id = psb_i.ber_id
  WHERE
  p.pers_id = '50'
);

Wenn du genau hinsiehst erkennst du dass die Abfrage aus einem inneren und einem äußeren Teil besteht. Der innere Teil ist das von dir oben auf die ID der Personal_Standard_Berechtigungen zusammengekürzt (SELECT psb_i.ber_id FROM ...). Außerdem habe ich Aliase vergeben damit man schneller sieht welcher Tabelle für die innere und welche für die äußere Abfrage verwendet wird. Die äußere Abfrage frägt alle Einträge ab die in der Tabelle sind und nicht in der inneren Abfrage vorhanden sind (WHERE psb.ber_id NOT IN).

Ich habs nicht getestet weil ich ja deine Daten nicht hab. Aber wenn ich bei deiner Beschreibung nichts übersehen habe sollte es klappen.
 

didi01

Aktives Mitglied

@msa1989

Hi,
vielen Dank für Deine Erläuterung. Die Abfrage klappt wunderbar. Eine Frage habe ich aber noch.

Wenn ich nun die Abfrage nicht auf einen Mitarbeiter (p.pers_id = '50') beschränken will und dann die Vor- und Nachnamen mit ausgeben möchte, wie muss die Abfrage dann formulieren. Die Spalten in der Tabelle personal lauten dementsprechend vorname und nachname.

Wenn ich den WHERE Part in der Abfrage einfach weg lasse oder durch LIKE '%' ersetze ist das Ergebnis gleich leer.

Gruß
didi01
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben