sqlglot.optimizer.expand_multi_table_selects
1from sqlglot import exp 2 3 4def expand_multi_table_selects(expression): 5 """ 6 Replace multiple FROM expressions with JOINs. 7 8 Example: 9 >>> from sqlglot import parse_one 10 >>> expand_multi_table_selects(parse_one("SELECT * FROM x, y")).sql() 11 'SELECT * FROM x CROSS JOIN y' 12 """ 13 for from_ in expression.find_all(exp.From): 14 parent = from_.parent 15 16 for query in from_.expressions[1:]: 17 parent.join( 18 query, 19 join_type="CROSS", 20 copy=False, 21 ) 22 from_.expressions.remove(query) 23 24 return expression
def
expand_multi_table_selects(expression):
5def expand_multi_table_selects(expression): 6 """ 7 Replace multiple FROM expressions with JOINs. 8 9 Example: 10 >>> from sqlglot import parse_one 11 >>> expand_multi_table_selects(parse_one("SELECT * FROM x, y")).sql() 12 'SELECT * FROM x CROSS JOIN y' 13 """ 14 for from_ in expression.find_all(exp.From): 15 parent = from_.parent 16 17 for query in from_.expressions[1:]: 18 parent.join( 19 query, 20 join_type="CROSS", 21 copy=False, 22 ) 23 from_.expressions.remove(query) 24 25 return expression
Replace multiple FROM expressions with JOINs.
Example:
>>> from sqlglot import parse_one >>> expand_multi_table_selects(parse_one("SELECT * FROM x, y")).sql() 'SELECT * FROM x CROSS JOIN y'