@@ -136,22 +136,22 @@ private void JoinWhenQueryHasNoLimitation(SqlStatement statement, SqlSelect sele
136136
137137 private void JoinViaIn ( SqlStatement statement , SqlSelect @select )
138138 {
139- SqlTableRef table = GetStatementTable ( statement ) ;
140- SqlExpression where = GetStatementWhere ( statement ) ;
139+ var table = GetStatementTable ( statement ) ;
140+ var where = GetStatementWhere ( statement ) ;
141141 JoinedTableRef = table ;
142- PrimaryIndexMapping indexMapping = PrimaryIndexes [ 0 ] ;
142+ var indexMapping = PrimaryIndexes [ 0 ] ;
143143 var columns = new List < ColumnInfo > ( ) ;
144- foreach ( ColumnInfo columnInfo in indexMapping . PrimaryIndex . KeyColumns . Keys )
145- {
146- SqlSelect s = select . ShallowClone ( ) ;
147- foreach ( ColumnInfo column in columns )
148- {
149- SqlBinary ex = SqlDml . Equals ( SqlDml . TableColumn ( s . From , column . Name ) , SqlDml . TableColumn ( table , column . Name ) ) ;
144+ foreach ( var columnInfo in indexMapping . PrimaryIndex . KeyColumns . Keys ) {
145+ var s = ( SqlSelect ) select . Clone ( ) ;
146+ foreach ( var column in columns ) {
147+ var ex = SqlDml . Equals ( s . From . Columns [ column . Name ] , table . Columns [ column . Name ] ) ;
150148 s . Where = s . Where . IsNullReference ( ) ? ex : SqlDml . And ( s . Where , ex ) ;
151149 }
150+ var existingColumns = s . Columns . ToChainedBuffer ( ) ;
152151 s . Columns . Clear ( ) ;
153- s . Columns . Add ( SqlDml . TableColumn ( s . From , columnInfo . Name ) ) ;
154- SqlBinary @in = SqlDml . In ( SqlDml . TableColumn ( table , columnInfo . Name ) , s ) ;
152+ var columnToAdd = existingColumns . First ( c => c . Name == columnInfo . Name ) ;
153+ s . Columns . Add ( columnToAdd ) ;
154+ var @in = SqlDml . In ( SqlDml . TableColumn ( table , columnInfo . Name ) , s ) ;
155155 @where = @where . IsNullReference ( ) ? @in : SqlDml . And ( @where , @in ) ;
156156 columns . Add ( columnInfo ) ;
157157 }
0 commit comments