Sql 使用联接的高级查询

Sql 使用联接的高级查询,sql,sql-server,tsql,Sql,Sql Server,Tsql,我创建了以下表格: CREATE TABLE Employees ( EmployeeID int IDENTITY(1,1) PRIMARY KEY ,EmployeeNumber int UNIQUE ,DateOfBirth datetime NOT NULL ,FirstName nvarchar(14) NOT NULL ,MiddleName nvarcha

我创建了以下表格:

CREATE TABLE Employees 
(
    EmployeeID      int         IDENTITY(1,1) PRIMARY KEY
    ,EmployeeNumber int         UNIQUE
    ,DateOfBirth    datetime        NOT NULL
    ,FirstName      nvarchar(14)    NOT NULL
    ,MiddleName     nvarchar(14)    NOT NULL
    ,LastName       nvarchar(16)    NOT NULL
    ,DateHired      datetime        NOT NULL 
)

CREATE TABLE Customers 
(
    CustomerID      int         IDENTITY(1,1) PRIMARY KEY
    ,FirstName      nvarchar(14)    NOT NULL
    ,MiddleName     nvarchar(14)    NOT NULL
    ,LastName       nvarchar(16)    NOT NULL
    ,DateLastVisited datetime       NOT NULL 
    ,EmailAddress   nvarchar(52)    NOT NULL
)

CREATE TABLE Departments 
(
    DepartmentID    int         IDENTITY(1,1) PRIMARY KEY
    ,Code           nchar(4)        UNIQUE
    ,Name           nvarchar(40)    NOT NULL 
)

CREATE TABLE DepartmentEmployees 
(
    DepartmentEmployeeID    int     IDENTITY(1,1) PRIMARY KEY
    ,EmployeeID     int             NOT NULL
            CONSTRAINT Department_Employee REFERENCES Employees(EmployeeID)
    ,DepartmentID   int         NOT NULL
            CONSTRAINT Employee_Department REFERENCES Departments(DepartmentID)
    ,DateStarted    datetime        NOT NULL
    ,DateEnded      datetime        NOT NULL 
)

CREATE TABLE Salaries 
(
    SalaryID        int         IDENTITY(1,1) PRIMARY KEY
    ,EmployeeID     int         NOT NULL
            CONSTRAINT Salaried_Employee REFERENCES Employees(EmployeeID)
    ,Amount     money           NOT NULL
    ,DateStarts     datetime        NOT NULL
    ,DateEnds       datetime        NOT NULL 
)
我已根据表格要求插入了数据

我正在研究这个问题:获取所有员工的名字和姓氏,以及部门代码和薪水

我为这个问题写了这个查询,但它不起作用

SELECT  
    E.FirstName, E.LastName, D.Code, S.Amount 
FROM
    Employees E
INNER JOIN
    Salaries S ON E.EmployeeID = S.EmployeeID
INNER JOIN
    Departments D ON D.DepartmentID = E.EmployeeID
请帮帮我

SELECT  E.FirstName,E.LastName, D.Code,S.Amount From Employees E
Inner Join Salaries S
On E.EmployeeID= S.EmployeeID
Inner join Departments D
**on D.DepartmentID= E.EmployeeID**

您确定要使用departmentID加入到EmployeeID吗?

此查询将提供您所需的所有信息

select  firstname, lastname ,Departments.Code as DepartmentCode,Salaries.Amount  as Salary
from 
Employees 
inner join DepartmentEmployees on Employees.EmployeeID = DepartmentEmployees.EmployeeID  
inner join Departments on   DepartmentEmployees.DepartmentID   = Departments.DepartmentID  
inner join Salaries on Employees.EmployeeID = Salaries.EmployeeID 

每个员工都属于某个部门的员工。因此,您必须将员工与部门员工合并。在“下一次加入”中,您可以找到部门代码,在“第三次加入”中,您可以从“薪资表”中找到薪资金额。

员工和部门之间没有直接联系,您需要加入“员工-部门员工-部门”当您说它不起作用时,解释一下原因很有帮助。不工作可能意味着很多事情;一个错误,意外的结果,没有结果,会导致你的电脑着火。最后一个是笑话,但你明白了。请帮助我们解释正在发生的事情以及您期望发生的事情。@jenna您的加入不正确。查看部门员工表,也许它会帮助你找到答案。你应该在问题评论中提问。是的。。看来我需要赢得更多的声誉才能做到这一点。