Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带左连接的SQL连接_Sql - Fatal编程技术网

带左连接的SQL连接

带左连接的SQL连接,sql,Sql,当执行下面的sql查询时,并没有按预期输出。请纠正我 SELECT COALESCE(NULLIF(b1.ShortCode,NULL)+'|'+ NULLIF(b2.ShortCode,NULL)+'|'+ NULLIF(b3.ShortCode,NULL)+'|'+ NULLIF(b4.ShortCode,NULL),NULLIF(b5.ShortCode,NULL))as Result FROM tbl_PropertyDetails

当执行下面的sql查询时,并没有按预期输出。请纠正我

SELECT              
COALESCE(NULLIF(b1.ShortCode,NULL)+'|'+ NULLIF(b2.ShortCode,NULL)+'|'+ 
NULLIF(b3.ShortCode,NULL)+'|'+ 
NULLIF(b4.ShortCode,NULL),NULLIF(b5.ShortCode,NULL))as Result
FROM tbl_PropertyDetails                                
LEFT JOIN tbl_FamilyMember b1 ON tbl_PropertyDetails.Member1ID = b1.FMID
LEFT JOIN tbl_FamilyMember b2 ON tbl_PropertyDetails.Member2ID = b2.FMID
LEFT JOIN tbl_FamilyMember b3 ON tbl_PropertyDetails.Member3ID = b3.FMID
LEFT JOIN tbl_FamilyMember b4 ON tbl_PropertyDetails.Member4ID = b4.FMID
LEFT JOIN tbl_FamilyMember b5 ON tbl_PropertyDetails.Member5ID = b5.FMID
[enter image description here][1]
试试这个:

SELECT  COALESCE(b1.ShortCode, '') + '|' + COALESCE(b2.ShortCode, '') + '|'
        + COALESCE(b3.ShortCode, '') + '|' + COALESCE(b4.ShortCode, '') ,
        COALESCE(b5.ShortCode, '') AS Result
FROM    tbl_PropertyDetails
        LEFT JOIN tbl_FamilyMember b1 ON tbl_PropertyDetails.Member1ID = b1.FMID
        LEFT JOIN tbl_FamilyMember b2 ON tbl_PropertyDetails.Member2ID = b2.FMID
        LEFT JOIN tbl_FamilyMember b3 ON tbl_PropertyDetails.Member3ID = b3.FMID
        LEFT JOIN tbl_FamilyMember b4 ON tbl_PropertyDetails.Member4ID = b4.FMID
        LEFT JOIN tbl_FamilyMember b5 ON tbl_PropertyDetails.Member5ID = b5.FMID

您可能需要相当于
CONCAT\u WS()
。将
|
仅放在实际值之间。如果是:

SELECT STUFF( COALESCE('|' + b1.ShortCode, '') + 
              COALESCE('|' + b2.ShortCode, '') + 
              COALESCE('|' + b3.ShortCode, '') + 
              COALESCE('|' + b4.ShortCode, '') + 
              COALESCE('|' + b5.ShortCode, ''),
              1, 1, '') as Result
FROM tbl_PropertyDetails LEFT JOIN
     tbl_FamilyMember b1
     ON tbl_PropertyDetails.Member1ID = b1.FMID LEFT JOIN
     tbl_FamilyMember b2
     ON tbl_PropertyDetails.Member2ID = b2.FMID LEFT JOIN
     tbl_FamilyMember b3
     ON tbl_PropertyDetails.Member3ID = b3.FMID LEFT JOIN
     tbl_FamilyMember b4
     ON tbl_PropertyDetails.Member4ID = b4.FMID LEFT JOIN
     tbl_FamilyMember b5
     ON tbl_PropertyDetails.Member5ID = b5.FMID;

你得到了什么样的输出?你希望它是什么样的输出?否则我们无法解决这个问题。请告诉我们实际结果是什么,您想要什么结果,以及表描述。至少您需要描述预期的输出,以及它与您得到的结果有何不同。string concat null=>null。
NULLIF(x,null)
是冗余的-只有当
x
NULL
时,它才会返回
NULL
-因此,只要使用
NULL(x,NULL)
即可