public RightOuterJoinIterator(Iterator iterator, RightOuterJoin rightOuterJoin) { this._iterator = iterator; this._rightOuterJoin = rightOuterJoin; //TODO get RowCount from database. }
public Join <TDto> RightOuterJoin(string tableName, string tableAlias = null, string dbSchema = "dbo") { var rightOuterJoin = new RightOuterJoin <TDto>(_spry, this, new SprySelectTable <TDto>(_spry, tableName, tableAlias, dbSchema)); _joins.Add(rightOuterJoin); return(rightOuterJoin); }
/// <summary> /// Generates the text for a RightOuterJoin builder. /// </summary> /// <param name="item">The RightOuterJoin builder to generate the text for.</param> protected internal override void VisitRightOuterJoin(RightOuterJoin item) { StringBuilder joinBuilder = new StringBuilder("RIGHT "); if (options.VerboseOuterJoin) { joinBuilder.Append("OUTER "); } joinBuilder.Append("JOIN"); visitFilteredJoin(item, joinBuilder.ToString()); }
internal static bool TryParseSources(ScriptParser Parser, out SourceDefinition Source) { if (!TryParseSource(Parser, out Source)) { return(false); } while (true) { string s = Parser.PeekNextToken().ToUpper(); switch (s) { case ",": Parser.NextToken(); if (!TryParseSource(Parser, out SourceDefinition Source2)) { return(false); } Source = new CrossJoin(Source, Source2, Source.Start, Parser.Position - Source.Start, Parser.Expression); break; case "INNER": case "JOIN": Parser.NextToken(); if (s == "INNER") { if (Parser.NextToken().ToUpper() != "JOIN") { return(false); } } if (!TryParseSource(Parser, out Source2)) { return(false); } ScriptNode Conditions = ParseJoinConditions(Parser); Source = new InnerJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression); break; case "LEFT": Parser.NextToken(); switch (Parser.NextToken().ToUpper()) { case "JOIN": break; case "OUTER": if (Parser.NextToken().ToUpper() != "JOIN") { return(false); } break; default: return(false); } if (!TryParseSource(Parser, out Source2)) { return(false); } Conditions = ParseJoinConditions(Parser); Source = new LeftOuterJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression); break; case "RIGHT": Parser.NextToken(); switch (Parser.NextToken().ToUpper()) { case "JOIN": break; case "OUTER": if (Parser.NextToken().ToUpper() != "JOIN") { return(false); } break; default: return(false); } if (!TryParseSource(Parser, out Source2)) { return(false); } Conditions = ParseJoinConditions(Parser); Source = new RightOuterJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression); break; case "FULL": Parser.NextToken(); switch (Parser.NextToken().ToUpper()) { case "JOIN": break; case "OUTER": if (Parser.NextToken().ToUpper() != "JOIN") { return(false); } break; default: return(false); } if (!TryParseSource(Parser, out Source2)) { return(false); } Conditions = ParseJoinConditions(Parser); Source = new FullOuterJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression); break; case "OUTER": Parser.NextToken(); if (Parser.NextToken().ToUpper() != "JOIN") { return(false); } if (!TryParseSource(Parser, out Source2)) { return(false); } Conditions = ParseJoinConditions(Parser); Source = new FullOuterJoin(Source, Source2, Conditions, Source.Start, Parser.Position - Source.Start, Parser.Expression); break; default: return(true); } } }
private void AddJoin(RightOuterJoin item) { this.IsSingleSource = false; throw new NotSupportedException(); }
protected override void VisitRightOuterJoin(RightOuterJoin item) { this.AddJoin(item); }
private void AddJoin(RightOuterJoin item) { throw new NotSupportedException(); }
=> LeftOuterJoin(firsts, seconds, equality).Concat(RightOuterJoin(firsts, seconds, equality));