如何在SQL Server中联接3个表?
我有三张桌子:如何在SQL Server中联接3个表?,sql,sql-server,join,Sql,Sql Server,Join,我有三张桌子: 交易(ID\U交易) 交易详情(ID\交易详情、ID\交易、ID\服务) 服务(ID_服务,名称) 我只想根据Transaction表中的ID\u事务获取服务的名称 我想要的表和输出: 我试过的代码: Select se.Name from Transactions as td, Services as se where td.ID_Transaction = 'TRA1' 但输出显示了服务表中的所有名称请尝试以下查询: select * from Transactio
Transaction
表中的ID\u事务
获取服务的名称
我想要的表和输出:
我试过的代码:
Select se.Name
from Transactions as td, Services as se
where td.ID_Transaction = 'TRA1'
但输出显示了服务表中的所有名称请尝试以下查询:
select *
from Transaction,Detail,Services
where Transaction.ID_Transcation=Detail.ID_Transaction
and Services.ID_Services=Detail.ID_Services;
缺少联接条件和表联接 非ANSI:
SELECT se.NAME
FROM Transactions AS td
,Transaction_Detail det
,Services AS se
WHERE
td.ID_Transaction = det.ID_Transaction
AND det. ID_Services= se. ID_Services
AND td.ID_Transaction = 'TRA1'
ANSI:
SELECT se.NAME
FROM Transactions AS td
INNER JOIN Transaction_Detail AS det ON td.ID_Transaction = det.ID_Transaction
INNER JOIN Services AS se ON det. ID_Services= se. ID_Services
WHERE td.ID_Transaction = 'TRA1'
首选ANSI标准连接。它们是可读的,并被广泛接受
多个关系数据库管理系统。
如果使用非ANSI连接,并且忘记了连接条件,则结果>将是交叉连接
更新您的问题并显示您当前的查询尝试。-在ANSI-92 SQL标准(25年前)中,用正确的ANSI
JOIN
语法替换了老式的逗号分隔表列表样式,不鼓励使用这种样式
SELECT se.NAME
FROM Transactions AS td
INNER JOIN Transaction_Detail AS det ON td.ID_Transaction = det.ID_Transaction
INNER JOIN Services AS se ON det. ID_Services= se. ID_Services
WHERE td.ID_Transaction = 'TRA1'