Edit on GitHub

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'