當談到SQL和SQL Server時,我還是一個新手,所以請耐心等待這個問題。我正在研究一個類似於我在下面創建的簡單假設情況的項目。我有我試圖創建一個視圖中的兩個表:使用來自同一個表的兩個外鍵創建視圖
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;
但這句話只創建一個具有兩排它是一個視圖兩個老闆。
我想是這樣的:
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只返回兩行。這是因爲只有那兩行符合WHERE子句中的兩個條件。我曾嘗試使用OR而不是AND,但返回也使得行和a實際上不匹配老闆和emp。任何幫助,我可以得到這將不勝感激!
查詢是要求那些誰是自己當老闆的員工,基本上是這樣。例如Marshal/101和Physics/104是您的條件滿足的唯一兩條記錄。 –
我知道這一點,這就是爲什麼我的問題是如何改變查詢,所以它不會要求那些是他們自己老闆的員工。順便提一下,感謝編輯提問。 – user3694592