我有以下两个表。
用户表
ID | 姓名 | 电子邮件 |
---|---|---|
32 | 你好 | [email protected] |
23 | 世界 | [email protected] |
销售表
ID | SellerId | 顾客ID | 数量 |
---|---|---|---|
4 | 32 | 23 | 25 |
我想以以下方式加入表以获得此结果。在这里,我只想获取客户ID等于23的条目。
ID | SellerId | 卖方名称 | 卖家电子邮件 | 数量 |
---|---|---|---|---|
4 | 32 | 你好。 | [email protected] | 25岁 |
并以这种方式进行另一个加入。在这里,我只想获取卖方ID等于32的条目。
ID | 顾客ID | 顾客姓名 | 客户电邮 | 数量 |
---|---|---|---|---|
4 | 23 | 世界 | [email protected] | 25岁 |
我的两个表的代码是
class Users(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
name = Column(String)
email = Column(String, unique=True, index=True, nullable=False)
class Sales(Base):
__tablename__="sales"
id = Column(Integer, primary_key=True, index=True)
seller_id = Column(Integer, index=True)
customer_id = Column(Integer, index=True)
amount = Column(Integer, index=True)
我可以使用原始SQL通过以下方式实现此目的
SELECT (sales.id), name as SellerName, email as SellerEmail, Amount
FROM sales
LEFT JOIN user ON sales.SellerId = user.id
WHERE CustomerId = 23
请帮助使用SqlAlchemy Session执行相同操作。
query = (
session.query(
Sales.id,
Users.name.label('SellerName'),
Users.email.label('SellerEmail'),
Sales.amount
)
.select_from(Sales)
.outerjoin(Users, Users.id == Sales.seller_id)
.filter(Sales.customer_id == 23)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句