【发布时间】:2020-11-04 00:50:21
【问题描述】:
您好,我正在尝试使用三个模型查询我的数据库,
产品、SalesDetails 和 SalesReturns
我想查询产品型号并只返回 id 不在的产品 销售详情 或者如果 SalesDetails.Sale_id 在 salesReturns.sale_id
基本上我想退回所有未售出或已退回的产品
我尝试过类似的方法
P1= Product.query.outerjoin(salesDetails)
P2=p1.outerjoin(SalesReturns)
P3=p2.filter(or_(SalesDetails.product_id==None,SalesDetails.sale_id==SalesReturn.sale_id)).all
问题是它返回所有产品 不管卖不卖,
我尝试通过两次销售相同产品并将 saleid 放入 salereturns 来测试它
但是即使第二次销售没有返回,查询也会返回所有产品。
我真的是数据库和 sqlalchemy 的初学者
如果您能提供帮助,我们将不胜感激。
如果你不明白我的意思,请在评论中问我。
谢谢。
【问题讨论】:
-
我对 SQLAlchemy 一无所知,但您的过滤器似乎在说
product_id is null OR SalesDetails.sale_id==SalesReturn.sale_id。也许这需要是 AND 而不是 OR? -
@Andrew 如果 ``` saleDetails.product_is 为 null 或 Salesreturn.sale_id ``` 不为空,则返回一行在表中的销售退货
标签: python sql python-3.x sqlalchemy flask-sqlalchemy