【问题标题】:How to get multiple values如何获取多个值
【发布时间】:2018-05-19 03:28:16
【问题描述】:

我有两张桌子:

  • request:请求数据的内容
  • table participant : 邀请的员工的内容

Request

ID_Request   emp_no  invited_by
-------------------------------
BTR1370      101240  101240 
BTR1371      100259  101240 
BTR1372      100308  101240 
BTR1373      100626  101240

Participant

ID_Participant ID_Request  participant_no   invited_by 
------------------------------------------------------
1              BTR1370     100259           101240
2              BTR1370     100308           101240
3              BTR1370     100626           101240

我想加入这些表,并希望在这里得到这个结果:

ID_Request  participant_no  invited_by
---------------------------------------
BTR1370     100259          101240
BTR1370     100308          101240
BTR1370     100626          101240
BTR1371     100259          101240
BTR1371     100308          101240
BTR1371     100626          101240
BTR1372     100259          101240
BTR1372     100308          101240
BTR1372     100626          101240
BTR1373     100259          101240
BTR1373     100308          101240
BTR1373     100626          101240

如何加入这两个表?我正在使用 SQL Server 2012。

非常感谢您的帮助

【问题讨论】:

  • 我想你在找CROSS JOIN
  • 我不这么认为。因为我已经尝试并显示了许多我没有预料到的结果,但是,感谢您的回复
  • 为什么不呢?您如何用文字来解释您要做什么,而不仅仅是使用模糊的示例数据?
  • 我试过交叉连接的样本,结果显示800行。
  • 给定样本的 cross join 的结果大小肯定是 12。如果它不是您要寻找的交叉产品,请解释结果如何取决于输入...

标签: sql sql-server join sql-server-2012


【解决方案1】:

如果 CROSS JOIN 不是您所追求的,并且无法查看更多示例数据,我只能假设您想要内部连接

SELECT r.ID_Request, p.participant_no, r.invited_by
FROM Table_Request r
    INNER JOIN Table_Participant p
        ON r.ID_Request = p.ID_Request

【讨论】:

    【解决方案2】:

    使用应该使用CROSS JOIN,就像 Gordon linoff 所说: 您可以包含一个 where 子句,使其表现得像一个内部连接 ​​- 即。其中 a.invited_By = b.invited_by

        declare @myt1 table (id_request nvarchar(50),emp_no int, invited_by int)
    insert into @myt1
    values 
    
    ('BTR1370',  101240  ,101240), 
    ('BTR1371',  100259  ,101240), 
    ('BTR1372',  100308  ,101240), 
    ('BTR1373',  100626  ,101240)
    
    declare @myt2 table ( id_participant int,id_request nvarchar(50),participant_no int, invited_by int)
    insert into @myt2
    values
    
    (1  ,'BTR1370',  100259 , 101240 ),
    (2  ,'BTR1370',  100308 , 101240 ),
    (3  ,'BTR1370',  100626 , 101240 )
    
    select a.id_request,b.participant_no,a.invited_by from @myt1 a
    cross join @myt2  b
    
    order by a.id_request
    

    结果

    【讨论】:

      【解决方案3】:

      使用交叉连接

      select TR.ID_Request,TR.participant_no,TR.invited_by from Table_Request TR cross join Table_Participant TP where TR.invited_by = TP.invited_by
      

      【讨论】:

        猜你喜欢
        • 2014-08-03
        • 2021-09-29
        • 1970-01-01
        • 2020-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-07
        • 2013-07-12
        相关资源
        最近更新 更多