Ich habe 3 Tabellen, die den Nutzern einen ihre RechteSQL Beziehungen zu Beziehungstabelle hinzufügen
Employee
+-----------+------+
|EmployeeID | Name |
+-----------+------+
|1 |Tim |
|2 |Tom |
+-----------+------+
Right
+-----------+------+
|RightID |Name |
+-----------+------+
|1 |Read |
|2 |Write |
|3 |Change|
+-----------+------+
EmployeeRight
+-----------+--------+
|EmplyeeID | RightID|
+-----------+--------+
|1 |1 |
|1 |2 |
|2 |1 |
+-----------+--------+
Jetzt schaffe ich brauche alle Benutzer das Recht „Change“, die das Recht „Schreiben“ zu geben haben. Aber Benutzer, die dieses Recht bereits haben, sollten es nicht zweimal bekommen.
Mein aktueller Versuch nicht funktioniert:
INSERT INTO EmployeeRight
(SELECT '3', EmployeeID FROM EmployeeRight WHERE RightID = 2 AND RightID !=3)
danke +1 für beide, aber das Entsprechen durch'EmpolyeeID' ist ein bisschen eleganter im Vergleich zu 'SELECT1' – Toshi
NOT IN wird nicht funktionieren, wenn die Unterabfrage NULL value.say zurückgibt, wenn Sie keinen Angestellten mit haben RightID = 3 bereits in Ihrer Tabelle Employee-Right, es gibt null zurück und Ihre Abfrage schlägt fehl. –
Das 'NOT IN' wird nur dann fehlschlagen, wenn eine Zeile mit einer NULL EmployeeID zurückgegeben wird. Da die 'EmployeeRight'-Tabelle eine assoziative Tabelle ist, sollte sie eine Primary Key-Einschränkung für die Kombination' EmplyeeID/RightID' haben, die NULL unmöglich macht (sonst können Sie noch eine 'WHERE EmployeeID IS NOT NULL' hinzufügen) – dnoeth