SQL Join Query VB(非常简单,我只是在学习)

时间:2012-07-24 18:04:04

标签: sql vb.net

我正在尝试在表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

2 个答案:

答案 0 :(得分:0)

对我来说很好,但在&之前有一些奇怪的LEFT JOIN LLC.[DataMapTool_FieldMapping] ......把它拿出来。

答案 1 :(得分: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子句将前两个表连接在一起,然后将第三个表附加到第一个连接的结果上。