Closed JonathanCabezas closed 8 months ago
Here is a quick fix:
class Subquery(Table):
def __init__(self, query: QueryBuilder) -> None:
self._query = query
self._table_name = query._from[0].get_table_name()
# Using the original table name as alias for the subquery
# for my use case, you can use something else
self._query.alias = self._table_name
super().__init__(self._table_name)
def get_sql(self, **kwargs: Any) -> str:
return self._query.get_sql(**kwargs)
order=Table("order")
product=Table("product")
subquery=Subquery(Query.from_(product).select(product.id).groupby(product.id))
Query.from_(order).join(subquery).on(order.id==product.id).select("*")
Would you like to create a pull request?
Would you like to create a pull request?
I don't think this code is anywhere near production-ready, this is just a quick workaround I used in my facade module. Hopefully it gives someone else ideas for a proper Subquery implementation.
Here is an example which triggers a
pypika.utils.JoinException
The join seems to only work with Tables