2017-10-23 20 views
0

VBAを使用してSQLクエリを実行するには、2つのテーブル内部結合のために正常に実行されるコードがあります。VBAのSQLクエリに複数の内部結合を使用

今度は、2つのテーブルを内部結合の助けにより組み合わせることができるクエリを編集したいと思います。

Sub SQL() 

     Dim cn As ADODB.Connection 
     Dim rs As ADODB.Recordset 

     strFile = ThisWorkbook.FullName 
     strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _ 
     & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" 

     Set cn = CreateObject("ADODB.Connection") 
     Set rs = CreateObject("ADODB.Recordset") 

     cn.Open strCon 

     strSQL = "SELECT [Sheet2$].[Sr], [Code], [Family] FROM [Sheet3$] INNER JOIN [Sheet2$] ON [Sheet2$].[Sr]=[Sheet3$].[Sr]" 

''Here i want to edit the code to combined more the 2 tables with the help of Inner join. 

     rs.Open strSQL, cn 

     Sheet3.Range("D1").CopyFromRecordset rs 

     End Sub 

たとえば、 - 私はシート4にもう1つのテーブルがあり、そこにはSrヘッダーもあります。同じことを私に指導してください。

enter image description here

答えて

1

あなただけの1がより多くの参加追加したい場合は、十分だろう:

strSQL = strSQL & " INNER JOIN [Sheet4$] ON [Sheet4$].[Sr]=[Sheet3$].[Sr]" 

しかし、あなたはまた、select句の一部のフィールドを追加することもできます。私のアドバイスは、[Sheet3 $]。[Code]のように、すべてのフィールドにシート識別子を追加すると、新しく結合されたテーブルで使用された場合、フィールド名の曖昧さを避けることができます。

+0

サー、編集したコードとエラーが画像内にあります... – sagar

+0

あなたのコードには[sheet3 $]。[Sr]。[open]とは何ですか? – MarcinSzaleniec

+0

sirはsheet4のフィールドですが、上記のソリューションにはエラーが発生しています。 – sagar

関連する問題