我正在使用Visual Studio 2017附带的SQL Server版本,并尝试通过连接四个表中的列来创建视图,如下所示:
表1: Employee (EmpID, EmpName, EmpContact, EmpSalary)
表2 :Customer (CustID, CustName, CustContact, CustEmail)
表3 :Orders (OrderID, OrderCustID, OrderDate, OrderStatus, OrderValue)
Orders.OrderCustID
是与Customer.CustID
表4 :Job (JobID, JobOrderID, JobEmpID, JobStatus, JobRemarks)
Job.JobOrderID
和Job.JobEmpID
是分别与Orders.OrderID
和Employee.EmpID
相关的两个外键。
现在,我想执行一个连接,它将按以下顺序显示Orders表的所有记录以及来自其他表的匹配:
OrderID, JobStatus, OrderStatus, CustID, CustName, CustContact, CustDue, EmpID, EmpName, EmpContact, Oredrvalue
有人请帮我写SQL Query来执行连接。非常感谢提前。
答案 0 :(得分:0)
您需要遍历每个JOIN
以确定要在哪里加入的内容。换句话说,您如何从员工到客户?这只是一个合乎逻辑的演练。
这是一种方法,使用内连接(基本上是一组大的交集)。
SELECT OrderID, JobStatus, OrderStatus, CustID, CustName, CustContact, CustDue, EmpID, EmpName, EmpContact, OrderValue
FROM Job
INNER JOIN Orders
ON Orders.OrderId=Job.JobOrderID
INNER JOIN Customer
ON Customer.CustId=Orders.OrderCustId
INNER JOIN Employee
ON Employee.EmpId=Job.JobEmpID
答案 1 :(得分:0)
好的,我想出来了,我将它发布在这里以供将来参考。
SELECT o.OrderID, j.JobStatus, o.OrderStatus, c.CustID, c.CustName, c.CustContact, c.CustDue, e.EmpID, e.EmpName, e.EmpContact, o.Oredrvalue
FROM Orders o
LEFT JOIN Customer c
ON o.OrderCustID=c.CustID
LEFT JOIN Job j
ON o.OrderID=j.JobOrderID
LEFT JOIN Employee e
ON j.JobEmpID=e.EmpID
我在所有场合都执行了左连接,因为我需要Orders表中的所有记录。非常感谢所有回复的人。