@@ -564,13 +564,18 @@ private void analyzeSelect(final TCustomSqlStatement stmt) {
564564 tables .add (select .tables .getTable (i ));
565565 }
566566
567+ List <TTable > parentTables = new ArrayList <TTable >();//add by grq 2023.05.07 issue=I70J7M
567568 TCustomSqlStatement parentStmt = select ;
568569 while (parentStmt .getParentStmt () != null ) {
569570 parentStmt = parentStmt .getParentStmt ();
570571 if (parentStmt instanceof TSelectSqlStatement ) {
571572 TSelectSqlStatement temp = (TSelectSqlStatement ) parentStmt ;
572573 for (int i = 0 ; i < temp .tables .size (); i ++) {
573- tables .add (temp .tables .getTable (i ));
574+ //edit by grq 2023.05.07 issue=I70J7M
575+ TTable tempTable = temp .tables .getTable (i );
576+ parentTables .add (tempTable );
577+ tables .add (tempTable );
578+ //end by grq
574579 }
575580 }
576581 }
@@ -657,6 +662,34 @@ private void analyzeSelect(final TCustomSqlStatement stmt) {
657662
658663 if ((leftTable != null )
659664 && (rightTable != null )) {
665+ //add by grq 2023.05.07 issue=I70J7M
666+ if (parentTables .indexOf (leftTable )<0 && parentTables .indexOf (rightTable )>=0 ){
667+ boolean aliasHave = false ;
668+ for (int k = 0 ; k < jrs .size (); k ++) {
669+ JoinCondition jc = jrs .get (k );
670+ if (jc .used ) {
671+ continue ;
672+ }
673+ for (int kk = 0 ; kk < tables .size (); kk ++){
674+ TTable t = tables .get (kk );
675+ if (parentTables .indexOf (t )<0 ){
676+ if (isNameOrAliasOfTable (t , jc .righttable )){
677+ if (tableUsed [kk ]){
678+ aliasHave = true ;
679+ break ;
680+ }
681+ }
682+ }
683+ }
684+ if (aliasHave ){
685+ break ;
686+ }
687+ }
688+ if (aliasHave ){
689+ continue ;
690+ }
691+ }
692+ //end by grq
660693 ArrayList <JoinCondition > lcjrs = getJoinCondition (leftTable ,
661694 rightTable ,
662695 jrs );
0 commit comments