0

我正在尝试进行一个查询,它在表 A 和表 B 中具有相同的字段。然后表 B 与表 C 具有相同的字段。我想左连接表 A 上的所有表。这可能吗?如果是,我的代码离它有多近?

    Try
            objConn = DBAccess.GetConnection
            strBlder.Append("SELECT ")
            strBlder.Append("FLD_NM, DATA_TYPE_CD, XML_PATH_TX, UPDT_USER_ID_NR, DOC_TMPL_FLD_ID_NR  ")
            strBlder.Append("FROM ")
            strBlder.Append("LLC.[LLCW10_DCTMPFLD_TB] LEFT JOIN LLC.[DataMapTool_FieldMapping] ")
            strBlder.Append("ON LLC.[LLCW10_DCTMPFLD_TB].DOC_TMPL_FLD_ID_NR = LLC.[DataMapTool_FieldMapping].DocumentTemplateFieldID ")
            strBlder.Append("& LEFT JOIN LLC.[DataMapTool_FieldMapping] ")
            strBlder.Append("ON LLC.[DataMapTool_FieldMapping].FieldMappingStatusID = LLC.[DataMapTool_FieldMappingStatus].FieldMappingStatusID ")

            strBlder.Append("ORDER BY FLD_NM ;")
            dsData = DBAccess.ExecuteDataTable(objConn, CommandType.Text, strBlder.ToString())
            'execute non query - takes sp name
4

2 回答 2

0

对我来说看起来不错,但在……把它拿出来&之前有一个奇怪的地方。LEFT JOIN LLC.[DataMapTool_FieldMapping]

于 2012-07-24T18:09:04.157 回答
0

您得到的错误(删除 后&)是因为LLC.[DataMapTool_FieldMapping]重复了,这是一个问题。而不是你的from条款尝试类似的东西:

FROM (LLC.[LLCW10_DCTMPFLD_TB] LEFT JOIN LLC.[DataMapTool_FieldMapping] ON LLC.[LLCW10_DCTMPFLD_TB].DOC_TMPL_FLD_ID_NR = LLC.[DataMapTool_FieldMapping].DocumentTemplateFieldID) LEFT JOIN LLC.[DataMapTool_FieldMappingStatus] ON LLC.[DataMapTool_FieldMappingStatus].FieldMappingStatusID = LLC.[DataMapTool_FieldMapping].FieldMappingStatusID

请注意,LLC.[DataMapTool_FieldMapping]在第一个连接中引用了该字段,然后.FieldMappingStatusID在第二个连接中仅引用了该字段。您的初始查询会尝试两次将同一个表添加到查询中,而不给它一个别名,这会使查询分析器感到困惑。

基本上,新from子句会将前两个表附加在一起,然后将第三个表附加到第一个连接的结果上。

于 2012-07-24T19:21:36.027 回答