मैं 3 मॉडल है:कुप्पी के SQLAlchemy 3 मॉडल भर में शामिल होने और एक टेबल का निर्माण
class Customer(Model):
__tablename__ = 'customer'
id = Column(Integer, primary_key=True)
statemented_branch_id = Column(Integer, ForeignKey('branch'))
...
class Branch(Model):
__tablename__ = 'branch'
id = Column(Integer, primary_key=True)
...
class SalesManager(Model):
__tablename__ = 'sales_manager'
id = Column(Integer, primary_key=True)
branches = relationship('Branch', secondary=sales_manager_branches)
और एक मेज निर्माण:
sales_manager_branches = db.Table(
'sales_manager_branches',
Column('branch_id', Integer, ForeignKey('branch.id')),
Column('sales_manager_id', Integer, ForeignKey('sales_manager.id'))
)
मैं एक SalesManager
के लिए सभी Customers
प्राप्त करने में सक्षम होना चाहता हूँ , जिसका अर्थ है Branch
SalesManager.branches
संबंधों में से किसी एक में statemented_branch_id
वाले सभी ग्राहक हैं।
branch_alias = aliased(Branch)
custs = Customer.query.join(branch_alias, SalesManager.branches).\
filter(Customer.statemented_branch_id == branch_alias.id)
स्पष्ट रूप से सही नहीं है कौन सा:
मेरे क्वेरी कुछ थोड़ा इस तरह लग रही है।
SalesManager
के लिए मैं सभी Customers
कैसे प्राप्त कर सकता हूं?
अद्यतन
जब मैं कोशिश:
*** OperationalError: (OperationalError) ambiguous column name: branch.id u'SELECT
customer.id AS customer_id, customer.statemented_branch_id AS
customer_statemented_branch_id \nFROM customer JOIN branch ON branch.id
customer.statemented_branch_id, "SalesManager" JOIN sales_manager_branches AS
sales_manager_branches_1 ON "SalesManager".id = sales_manager_branches_1.sdm_id JOIN
branch ON branch.id = sales_manager_branches_1.branch_id \nWHERE "SalesManager".id = ?'
(1,)
आप इस मामले में शामिल होने के लिए '' aliased' Branch' करना होगा, जैसा SQLAlchemy SQL में 'branch' तालिका रहा है दो बार , और दोनों बार उपनाम के बिना। –
धन्यवाद शॉन, मैं इसे नीचे दिए गए मेरे उत्तर में ऐसा कर रहा हूं। मैंने आपके उत्तर/टिप्पणियों को अप-वोट दिया है, लेकिन जब मैं कर सकता हूं तो मैं अपना खुद का स्वीकार करूंगा। –