SQL连接查询选择

时间:2015-06-23 11:52:37

标签: sql sql-server sql-server-2008

请查看下表和结果。检查我的查询并帮助我获得如下结果。

Table : incident
----------------
incident_id   usr_id    item_id
10059926       191       61006

Table: act_reg
--------------
act_reg_id  act_type_id  incident_id    usr_id  act_type_sc
454244         1        10059926         191    ASSIGN
471938        115       10059926         191    TRAVEL TIME
473379        40        10059926         191    FOLLOW UP
477652        115       10059926         191    TRAVEL TIME
477653        107       10059926         191    SITE ARRIVAL
489091      5000054     10059926         191    ADD_ATTCHMNTS

Result(Need to get)
-------------------
incident_id   usr_id    item_id  Attachment
10059926       191      61006     Yes

我的查询:

SELECT incident.incident_id,incident.usr_id,incident.item_id,Attachemt
FROM incident RIGHT JOIN act_reg ON incident.incident_id=act_reg.incident_id

3 个答案:

答案 0 :(得分:4)

如果我理解您的要求,您只需要表incident中的行和附加列(如果存在附着),如果表act_reg中至少有一条记录具有相同的{{}} {1}} + incident_idusr_id

我会使用act_type_sc=ADD_ATTCHMNTS

CASE WHEN EXISTS

Demo

答案 1 :(得分:0)

这样的事情应该有所帮助

SELECT  incident.incident_id,incident.usr_id,incident.item_id,
        'Yes' Attachemt
  FROM  incident 
  where exists (select * from act_reg 
                  where incident.incident_id = act_reg.incident_id
                    and act_reg.act_type_sc  = 'ADD_ATTCHMNTS'
               )

答案 2 :(得分:0)

不知道附件是什么意思,但如果你想为你的联接结果想要另一列,你可以使用它。结果将仅包含所需的行

SELECT incident.incident_id,incident.usr_id,incident.item_id, 'yes'
FROM incident, act_reg WHERE incident.incident_id = act_reg.incident_id;