SQL FIDDLE DEMO HEREWie kann ich Case für diese Abfrage auswählen?
Ich habe diese Struktur von Tabellen:
CREATE TABLE Users
([UserId] int,
[IdDepartment] int);
INSERT INTO Users
([UserId], [IdDepartment])
VALUES
(1, 5),
(2, 0),
(3, -1),
(4, 0),
(5, -1),
(6, 0);
CREATE TABLE Department
([IdDepartment] int, [Name] varchar(23), [IdUser] int);
INSERT INTO Department
([IdDepartment], [Name], [IdUser])
VALUES
(1, 'Sales', 3),
(2, 'Finance', null),
(3, 'Accounting' , 5),
(4, 'IT' ,3),
(5, 'Secretary',null),
(6, 'Sport',3);
Ich mag eine Abfrage mit diesen Ergebnissen erhalten: In der Tabelle Benutzer, wenn die IdDepartment 0 ist, bedeutet, dass der Benutzer ein Administrator ist so Er kann alle Abteilungen sehen. Wenn der Benutzer eine -1 in der IDpartment hat, bedeutet dies, dass der Benutzer auf begrenzte Abteilungen zugreifen kann. In diesem Fall mache ich einen inneren Join zur Abteilungstabelle, um die Liste dieser Abteilungen zu erhalten. Der letzte Fall ist, wenn der Benutzer eine Nummer für das idDepartament in der Benutzertabelle hat, die von 0 verschieden ist und sich von -1 unterscheidet, bedeutet dies, dass der Benutzer nur auf diese Abteilung zugreifen kann.
Ich habe versucht, so etwas zu tun, aber es ist nicht gut strukturiert:
select
case idDepartment
when 0 then (select Name from Department)
when -1 then (select Name from Department where IdUser = 3)
else (select Name from Department
inner join Users on Department.idDepartment = Users.Department
where Users.UserId = 3)
end
from
Department
where
IdUser = 3
Wie kann ich das tun? Vielen Dank.
füge ich ein Beispiel für das, was ich zu bekommen:
-For the user that has the userid (1) --> Department Name --------------- Secretary -For the user that has the userid (2) --> Department Name --------------- Sales Finance Accounting IT Secretary Sport -For the user that has the userid (3) --> Department Name --------------- Sales IT Sports
Dies überhaupt keinen Sinn machen. Sie haben eine großartige Arbeit geleistet, indem Sie ddl und Beispieldaten gepostet haben. Ich wünschte, jeder würde so einen netten Job machen. Was wäre der erwartete Output davon? –
Kannst du das Ergebnis auch posten –
Dies ist ein kleines Beispiel für das, was ich brauche, aber ich mache dieses Beispiel, um zu wissen, wie man den ausgewählten Fall behandelt –