我有一个使用SQL Express 2008的工作订单系统。我有一个名为Workorders的表,其中有几个人员通过UserID链接到它。在Workorder表中,我有技术人员的TechID,客户的CustomerID,质量保证的QAID。它们通过UserID(用户表PK)链接回用户表。我想加入表格以从用户表中返回技术员姓名,客户名称和QA名称以及工作订单表中的其他工作信息信息。我不知道如何构建连接。
答案 0 :(得分:2)
有点像这样的东西:
select tech.name as tech_name,
customer.name as customer_name,
qa.name as qa_name
from Workorders
inner join User as tech on tech.userId = Workorders.techId
inner join User as customer on customer.useId = Workorders.CustomerId
inner join User as qa on qa.useId = Workorders.QAID
(可能需要一些调整,但想法应该在这里)
即,你是:
这允许您使用select子句中的正确别名来获取每个名称。
请注意,我在select子句中也使用了别名 - 这对于拥有“worker_name”和“tech_name”非常有用,而不仅仅是两列名称“name” - 特别是如果你从某些人那里调用这个查询其他编程语言。
注意:如果其中一个userId字段可以为NULL,则可能需要使用左连接而不是内连接。
答案 1 :(得分:0)
select tus.Name as 'TechnicianName',
cus.Name as 'CustomerName',
qus.Name as 'QaName',
wod.*
from WorkOrders wod
left outer join
Users tus on tus.UserId = wod.TechId
left outer join
Users cus on cus.UserId = wod.CustomerId
left outer join
Users qus on qus.UserId = wod.QaId