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

最初の結合では が参照され、2 番目の結合ではフィールドLLC.[DataMapTool_FieldMapping]のみが参照されることに注意してください。.FieldMappingStatusID最初のクエリは、クエリ アナライザーを混乱させるエイリアスを指定せずに、同じテーブルをクエリに 2 回追加しようとしていました。

基本的に、新しいfrom句は最初の 2 つのテーブルを一緒にアタッチし、次に 3 番目のテーブルを最初の結合の結果にアタッチします。

于 2012-07-24T19:21:36.027 に答える