private void visitSelectCombiner(SelectCombiner combiner, string combinerToken) { bool needsParenthesis = level > 0; if (needsParenthesis) { writer.Write("("); } combiner.LeftHand.Accept(this); writer.Write(" "); writer.Write(combinerToken); writer.Write(" "); if (combiner.Distinct != DistinctQualifier.Default) { DistinctQualifierConverter converter = new DistinctQualifierConverter(); writer.Write(converter.ToString(combiner.Distinct)); writer.Write(" "); } combiner.RightHand.Accept(this); if (combiner.OrderBy.Any()) { writer.Write(" ORDER BY "); join(", ", combiner.OrderBy); } if (needsParenthesis) { writer.Write(")"); } }
private void visitSelect(SelectBuilder item) { bool needsParentheses = level > 0; if (needsParentheses) { writer.Write("("); } writer.Write("SELECT "); if (item.Distinct != DistinctQualifier.Default) { DistinctQualifierConverter converter = new DistinctQualifierConverter(); writer.Write(converter.ToString(item.Distinct)); writer.Write(" "); } if (item.Top != null) { IVisitableBuilder top = item.Top; top.Accept(forSubCommand().forValueContext(ValueReferenceType.Reference)); writer.Write(" "); } forValueContext(ValueReferenceType.Declaration).join(", ", item.Projection); if (item.From.Any()) { writer.Write(" FROM "); forSourceContext(SourceReferenceType.Declaration).join(", ", item.From); } if (item.WhereFilterGroup.HasFilters) { writer.Write(" WHERE "); IFilter where = item.WhereFilterGroup; where.Accept(forSubCommand().forValueContext(ValueReferenceType.Reference)); } if (item.GroupBy.Any()) { writer.Write(" GROUP BY "); forValueContext(ValueReferenceType.Reference).join(", ", item.GroupBy); } if (item.HavingFilterGroup.HasFilters) { writer.Write(" HAVING "); IFilter having = item.HavingFilterGroup; having.Accept(forSubCommand().forValueContext(ValueReferenceType.Reference)); } if (item.OrderBy.Any()) { writer.Write(" ORDER BY "); forValueContext(ValueReferenceType.Alias).join(", ", item.OrderBy); } if (needsParentheses) { writer.Write(")"); } }