Пример #1
0
        private SqlFrom AddFrom(Token[] tokens, ref int i, SqlQuery parent)
        {
            var section = new SqlFrom(parent);

            section.Sections.Add(new SqlSection(section, new SqlToken(true, tokens[i])));
            parent.Sections.Add(section);

            for (i++; i < tokens.Length; i++)
            {
                if (IsMatch(tokens, i, "WHERE"))
                {
                    AddWhere(tokens, ref i, parent);
                    break;
                }
                else if (IsMatch(tokens, i, "ORDER", "BY"))
                {
                    AddOrderBy(tokens, ref i, parent);
                    break;
                }
                else if (IsMatch(tokens, i, "GROUP", "BY"))
                {
                    AddGroupBy(tokens, ref i, parent);
                    break;
                }
                //else if (IsMatch(tokens, i, "JOIN") ||
                //    (IsMatch(tokens, i, "LEFT") && tokens[i + 1].Type != TokenType.StartParenthesis) ||
                //    (IsMatch(tokens, i, "RIGHT") && tokens[i + 1].Type != TokenType.StartParenthesis) ||
                //    IsMatch(tokens, i, "FULL") ||
                //    IsMatch(tokens, i, "INNER") ||
                //    IsMatch(tokens, i, "OUTER"))
                //{
                //    AddJoin(tokens, ref i, result, parent);
                //    break;
                //}
                else if (tokens[i].Type == TokenType.EndOfQuery || tokens[i].Type == TokenType.EndParenthesis)
                {
                    AddTokenSection(parent, tokens[i]);
                    break;
                }
                else if (IsQueryStart(tokens[i]))
                {
                    i--;
                    break;
                }

                AddTokenSection(section, tokens[i]);
            }
            return(section);
        }
Пример #2
0
        private SqlFrom AddFrom(Token[] tokens, ref int i, SqlQuery parent)
        {
            var section = new SqlFrom(parent);
            section.Sections.Add(new SqlSection(section, new SqlToken(true, tokens[i])));
            parent.Sections.Add(section);

            for (i++; i < tokens.Length; i++)
            {
                if (IsMatch(tokens, i, "WHERE"))
                {
                    AddWhere(tokens, ref i, parent);
                    break;
                }
                else if (IsMatch(tokens, i, "ORDER", "BY"))
                {
                    AddOrderBy(tokens, ref i, parent);
                    break;
                }
                else if (IsMatch(tokens, i, "GROUP", "BY"))
                {
                    AddGroupBy(tokens, ref i, parent);
                    break;
                }
                //else if (IsMatch(tokens, i, "JOIN") ||
                //    (IsMatch(tokens, i, "LEFT") && tokens[i + 1].Type != TokenType.StartParenthesis) ||
                //    (IsMatch(tokens, i, "RIGHT") && tokens[i + 1].Type != TokenType.StartParenthesis) ||
                //    IsMatch(tokens, i, "FULL") ||
                //    IsMatch(tokens, i, "INNER") ||
                //    IsMatch(tokens, i, "OUTER"))
                //{
                //    AddJoin(tokens, ref i, result, parent);
                //    break;
                //}
                else if (tokens[i].Type == TokenType.EndOfQuery || tokens[i].Type == TokenType.EndParenthesis)
                {
                    AddTokenSection(parent, tokens[i]);
                    break;
                }
                else if (IsQueryStart(tokens[i]))
                {
                    i--;
                    break;
                }

                AddTokenSection(section, tokens[i]);
            }
            return section;
        }