如何在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

我有三张桌子:

  • 交易(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 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'