【发布时间】:2016-09-27 08:19:15
【问题描述】:
我有一个如下查询来加入 6 个表。
select usr.userid,usr.firstName,usr.middleName,usr.lastName,nuser.GRAND_FATHER_NAME,nco untry.NAME_AR,ncountry.NAME_EN,ncase.START_DATE
from User_ usr
inner join TBL_NAFETHAH_USER nuser
On nuser.USER_ID = usr.userId
inner join TBL_NAFETHAH_COUNTRY ncountry
on nuser.NATIONALITY = ncountry.ID
inner join TBL_NAFETHAH_CASE ncase
on usr.userId = ncase.inmate_id
inner join TBL_NAFETHAH_CASE_STATUS ncasestatus
ON ncase.CASE_STATUS_ID = ncasestatus.CASE_STATUS_ID
and ncasestatus.CASE_STATUS IN (1,2))
inner join TBL_NAFETHAH_CASE_STAGE ncasestage
on ncasestage.CASE_STAGE_ID = ncase.CASE_STAGE_ID
inner join TBL_NAFETHAH_USER_IDENTIFICATION uident
on ( (usr.userId = uident.USER_ID and uident.ID_TYPE = 1) or (usr.userId = uident.USER_ID and uident.ID_TYPE = 2) )
inner join TBL_NAFETHAH_LOOKUP_VALUE nlookup
on nlookup.LOOKUP_KEY = uident.ID_TYPE
and nlookup.CATEGORY_ID = 9
inner join TBL_NAFETHAH_LOOKUP_VALUE nlookup2
on nlookup2.LOOKUP_KEY = ncasestage.CASE_STAGE
and nlookup2.CATEGORY_ID = 15
where nuser.MAKE_PUBLIC = 1
我想在这一行再添加一个条件
inner join TBL_NAFETHAH_USER_IDENTIFICATION uident on ( (usr.userId = uident.USER_ID and uident.ID_TYPE = 1) or (usr.userId = uident.USER_ID and uident.ID_TYPE = 2) )
如果这个条件不满足,即空(usr.userId = uident.USER_ID and uident.ID_TYPE = 1) or (usr.userId = uident.USER_ID and uident.ID_TYPE = 2)m 那么我必须添加另一个条件(usr.userId = uident.USER_ID),如果它返回多行只取第一行。
如何实现?
【问题讨论】:
标签: sql join left-join inner-join