Better handling of joins (flip the join-on if needed)

This commit is contained in:
2023-03-06 09:40:45 -06:00
parent 68686c0e17
commit 47d2291d96

View File

@ -212,7 +212,7 @@ public abstract class AbstractRDBMSAction implements QActionInterface
// find the join in the instance, to set the 'on' clause //
////////////////////////////////////////////////////////////
List<String> joinClauseList = new ArrayList<>();
String baseTableName = joinsContext.resolveTableNameOrAliasToTableName(queryJoin.getBaseTableOrAlias());
String baseTableName = Objects.requireNonNullElse(joinsContext.resolveTableNameOrAliasToTableName(queryJoin.getBaseTableOrAlias()), tableName);
QJoinMetaData joinMetaData = Objects.requireNonNullElseGet(queryJoin.getJoinMetaData(), () ->
{
QJoinMetaData found = findJoinMetaData(instance, joinsContext, baseTableName, queryJoin.getJoinTable());
@ -239,6 +239,13 @@ public abstract class AbstractRDBMSAction implements QActionInterface
}
String joinTableOrAlias = queryJoin.getJoinTableOrItsAlias();
if(!joinMetaData.getLeftTable().equals(baseTableName))
{
joinOn = joinOn.flip();
QTableMetaData tmpTable = leftTable;
leftTable = rightTable;
rightTable = tmpTable;
}
joinClauseList.add(escapeIdentifier(baseTableOrAlias)
+ "." + escapeIdentifier(getColumnName(leftTable.getField(joinOn.getLeftField())))