Пример #1
0
        internal override List <Condition> GetConditions()
        {
            var listConditions = base.GetConditions();

            /// All Conditions from set operations queries
            listConditions.AddRange(ListSetOp.Select(r => r.Query.GetConditions()).SelectMany(r => r));

            /// All Conditions from Having clause
            if (HavingCondition != null)
            {
                listConditions.AddRange(HavingCondition.GetAllConditions());
            }

            return(listConditions);
        }
Пример #2
0
        public override string ToPlainQuery()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("SELECT");

            if (SelectDistinct)
            {
                sb.Append(" DISTINCT");
            }

            if (TopN > 0)
            {
                sb.AppendFormat(" TOP {0}", TopN);
            }

            if (SelectColumns.Count > 0)
            {
                for (int i = 0; i < SelectColumns.Count; i++)
                {
                    Column col = SelectColumns[i];

                    sb.Append(" " + col.AliasedName);

                    if (i < SelectColumns.Count - 1)
                    {
                        sb.Append(",");
                    }
                }
            }
            else
            {
                sb.Append(" *");
            }

            sb.AppendFormat(" FROM {0}{1}",
                            FromTableOrQuery(),
                            FromQuery == null ? "" : $" AS {FromQuery.Item2}");

            sb.Append($" {JoinString}");

            if (WhereCondition != null)
            {
                sb.AppendFormat(" WHERE {0}", WhereCondition.ToString());
            }

            if (GroupByColumns.Count > 0)
            {
                sb.AppendFormat(" GROUP BY {0}", String.Join(",", GroupByColumns.Select(r => " " + r.FullName)));
            }

            if (HavingCondition != null)
            {
                sb.AppendFormat(" HAVING {0}", HavingCondition.ToString());
            }

            if (OrderByColumns.Count > 0)
            {
                sb.AppendFormat(" ORDER BY {0}", String.Join(",", OrderByColumns.Select(r => String.Format(" {0} {1}", String.IsNullOrEmpty(r.Item1.Alias) ? r.Item1.FullName : r.Item1.Alias, r.Item2.GetStringValue()))));
            }

            sb.Append($" {SetOpString}");

            return(sb.ToString().Trim());
        }