protected static string GetJoinStatement(StandardProviderParameters std, tgDynamicQuerySerializable query) { string sql = String.Empty; IDynamicQuerySerializableInternal iQuery = query as IDynamicQuerySerializableInternal; if (iQuery.InternalJoinItems != null) { foreach (tgJoinItem joinItem in iQuery.InternalJoinItems) { tgJoinItem.tgJoinItemData joinData = (tgJoinItem.tgJoinItemData)joinItem; switch (joinData.JoinType) { case tgJoinType.InnerJoin: sql += " INNER JOIN "; break; case tgJoinType.LeftJoin: sql += " LEFT JOIN "; break; case tgJoinType.RightJoin: sql += " RIGHT JOIN "; break; case tgJoinType.FullJoin: sql += " FULL JOIN "; break; } IDynamicQuerySerializableInternal iSubQuery = joinData.Query as IDynamicQuerySerializableInternal; sql += Shared.CreateFullName(std.request, joinData.Query); sql += " " + iSubQuery.JoinAlias; if (query.tg.WithNoLock == true) { sql += " WITH (NOLOCK)"; } sql += " ON "; sql += GetComparisonStatement(std, query, joinData.WhereItems, String.Empty); } } return(sql); }
protected static string GetJoinStatement(StandardProviderParameters std, tgDynamicQuerySerializable query) { string sql = String.Empty; IDynamicQuerySerializableInternal iQuery = query as IDynamicQuerySerializableInternal; if (iQuery.InternalJoinItems != null) { foreach (tgJoinItem joinItem in iQuery.InternalJoinItems) { tgJoinItem.tgJoinItemData joinData = (tgJoinItem.tgJoinItemData)joinItem; switch (joinData.JoinType) { case tgJoinType.InnerJoin: sql += " INNER JOIN "; break; case tgJoinType.LeftJoin: sql += " LEFT JOIN "; break; case tgJoinType.RightJoin: sql += " RIGHT JOIN "; break; case tgJoinType.FullJoin: sql += " FULL JOIN "; break; } IDynamicQuerySerializableInternal iSubQuery = joinData.Query as IDynamicQuerySerializableInternal; sql += Shared.CreateFullName((tgProviderSpecificMetadata)iSubQuery.ProviderMetadata); sql += " " + iSubQuery.JoinAlias + " ON "; foreach (tgComparison comparisonItem in joinData.WhereItems) { tgComparison.tgComparisonData comparisonData = (tgComparison.tgComparisonData)comparisonItem; if (comparisonData.IsParenthesis) { if (comparisonData.Parenthesis == tgParenthesis.Open) { sql += "("; } else { sql += ")"; } continue; } if (comparisonData.IsConjunction) { if (comparisonData.Conjunction == tgConjunction.And) { sql += " AND "; } else { sql += " OR "; } continue; } sql += GetColumnName(comparisonData.Column); switch (comparisonData.Operand) { case tgComparisonOperand.Equal: sql += " = "; break; case tgComparisonOperand.NotEqual: sql += " <> "; break; case tgComparisonOperand.GreaterThan: sql += " > "; break; case tgComparisonOperand.LessThan: sql += " < "; break; case tgComparisonOperand.LessThanOrEqual: sql += " <= "; break; case tgComparisonOperand.GreaterThanOrEqual: sql += " >= "; break; case tgComparisonOperand.IsNull: sql += " IS NULL "; break; case tgComparisonOperand.IsNotNull: sql += " IS NOT NULL "; break; case tgComparisonOperand.In: sql += " IN "; break; case tgComparisonOperand.NotIn: sql += " NOT IN "; break; } if (comparisonData.ComparisonColumn.Name != null) { sql += GetColumnName(comparisonData.ComparisonColumn); } else { tgDynamicQuerySerializable subQuery = comparisonData.Value as tgDynamicQuerySerializable; if (subQuery != null) { sql += GetSubquerySearchCondition(subQuery) + " (" + BuildQuery(std, subQuery) + ")"; } else if (comparisonData.Value != null) { // Handle Literals sql += comparisonData.Value.ToString(); } } } sql += ")"; } } return(sql); }