1

SQL と SQL Server に関してはまだ初心者なので、この質問についてはご容赦ください。以下で作成した単純な仮説的な状況に似たプロジェクトに取り組んでいます。ビューを作成しようとしている2つのテーブルがあります。

CREATE TABLE Emp (
Emp_ID int IDENTITY(101,1) NOT NULL,
Emp_Name VARCHAR(10) NULL,
Emp_Boss int NULL,
PRIMARY KEY (Emp_ID),
CONSTRAINT fk_emp_boss FOREIGN KEY (Emp_Boss) REFERENCES Emp(Emp_ID));

CREATE TABLE Dept (
Dept_ID tinyint IDENTITY(101,1) NOT NULL,
Dept_Name VARCHAR(10) NULL,
Dept_Boss int NULL,
Dept_Emp int NULL,
PRIMARY KEY (Dept_Id),
CONSTRAINT fk_boss FOREIGN KEY (Dept_Boss) REFERENCES Emp(Emp_ID),
CONSTRAINT fk_emp FOREIGN KEY (Dept_Emp) REFERENCES Emp(Emp_ID));
INSERT INTO Emp (Emp_Name, Emp_Boss)
VALUES ('Marshal', 101), ('Lilly', 101), ('Robin', 101), ('Barney', 104), ('Ted', 104), ('Tracy', 104);
INSERT INTO Dept (Dept_Name, Dept_Boss, Dept_Emp)
VALUES ('Math',101,101), ('Math',101,102), ('Math',101,103), ('Physics',104,104),('Physics',104,105), ('Physics',104,106);

これまでのところ、次の Create ステートメントがあります。

CREATE VIEW Tests AS
SELECT Dept_Name, Emp_Name AS Dept_Boss, Emp_Name 
FROM Dept, Emp 
WHERE Dept_Boss = Emp_ID AND 
Dept_Emp = Emp_ID;

ただし、このステートメントは、2 つのボスである 2 つの行を持つビューのみを作成します。

そして、私はこのようなものが欲しい:

Dept_Name | Dept_Emp | Dept_Boss
Math            | Marshal     | Marshal
Math            | Lilly           | Marshal
Math            | Tracy         | Marshal
Physics        | Barney      | Barney
Physics        | Robin        | Barney
Physics        | Ted           | Barney

とにかくこれを行うことはありますか?私が作成した CREATE VIEW が 2 行しか返さない理由がわかりました。これは、これらの 2 つの行だけが WHERE 句の両方の条件を満たしているためです。AND の代わりに OR を使用しようとしましたが、行を作成しすぎて、上司と従業員が実際には一致しません。これについて私が得ることができるどんな助けも大歓迎です!

4

1 に答える 1