ŹR
alias Ecto.Query, as: Q
...
# create query
Q.from("left", as: :l)
|> Q.join(:left, [l: le], r in "right", on: r.id == le.r_id, as: :r)
|> Q.select([l: le, r: ri], {le.id, ri.id})
# translate to sql
|> (&Ecto.Adapter.Queryable.plan_query(:all, Ecto.Adapters.Postgres, &1)).() |> elem(0)
|> Ecto.Adapters.Postgres.Connection.all()
|> List.to_string