无法确定要从哪个FROM子句联接,有多个FROM可以联接到此实体:错误

2024-10-04 09:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

当我尝试执行多个联接时,CurrentExchangeRate1出现错误:

class FC(PresentationUnified, TableDocMixin):
    FC_pkey = Column(BIGINT,  primary_key=True)
    siteid = Column(BIGINT)
    tenantid = Column(BIGINT)
    auditinfo__createdate = Column(TIMESTAMP)
    auditinfo__updatedate = Column(TIMESTAMP)
    currency_code = Column(String(512))
    

    PrimaryKeyConstraint(FC_pkey, name='FC_pkey')

    __tablename__ = 'cart_fact'
    
    def __init__(self, schema=PresentationUnified.metadata.schema):
      self.__table__.schema = schema


    def __source(self, session, schema, monetate_schema, postgres_schema, is_migration):
        Currency = "\'USD\'"
        Tenant(schema=postgres_schema)
        Cart(schema=schema)
        CurrentExchangeRate1 = None
        CurrentExchangeRate2 = None
        
        query = session.query(func.md5(func.CONVERT(literal_column('varchar'),Cart._id)
                                       + func.CONVERT(literal_column('varchar'),Cart.tenantid)).label("FC_pkey")
                              , Cart.siteid.label("siteid")
                              , Cart.tenantid.label("tenantid")
                              , Cart.auditinfo__createdate.label("auditinfo__createdate")
                              , Cart.auditinfo__updatedate.label("auditinfo__updatedate")
                              , func.upper(Tenant.reportingcurrencycode).label("currency_code")
                              )

        return query.join(CurrentExchangeRate1, and_(func.UPPER(Cart.currencycode) ==
                                                         func.UPPER(CurrentExchangeRate1.from_currency_code),
                                                         func.upper(CurrentExchangeRate1.to_currency_code) == Currency,
                                                         func.trunc(func.dateadd(literal_column('day'), -1, func.to_date(Cart.auditinfo__createdate,'YYYY-MM-DD HH:MI:SS')))
                                                         == func.trunc(CurrentExchangeRate1.effective_date)),isouter=True).\
                join(Tenant , Cart.tenantid == Tenant.tenantid).join \
                (CurrentExchangeRate2, and_(func.UPPER(Cart.currencycode) == func.UPPER(CurrentExchangeRate2.from_currency_code),
                                            func.upper(CurrentExchangeRate2.to_currency_code) == func.UPPER(Tenant.reportingcurrencycode) ,
                                            func.trunc(func.dateadd(literal_column('day'), -1,func.to_date(Cart.auditinfo__createdate ,'YYYY-MM-DD HH:MI:SS'))) == func.trunc(CurrentExchangeRate2.effective_date)),isouter=True)

我想要的sql如下所示:

select  FC_pkey,siteid, tenantid, auditinfo__createdate, auditinfo__updatedate, currency_code 
from 
cart  left join "
exchange_rate b ON trunc(dateadd(day, -1,to_date(a.auditinfo__createdate,\\'YYYY-MM-DD HH:MI:SS\\'))) = trunc(b.effective_date) and upper(a.currencycode)=upper(b.from_currency_code) and upper (b.to_currency_code) = \\'USD\\' inner join 
tenant c ON a.tenantid = c.tenantid left join "
exchange_rate d "
on trunc(dateadd(day, -1,to_date(a.auditinfo__createdate,\\'YYYY-MM-DD HH:MI:SS\\'))) = trunc(d.effective_date) and upper (a.currencycode) = upper (d.from_currency_code)
and upper (d.to_currency_code) = upper (c.reportingcurrencycode)

Tags: todateschemacodecolumnuppercurrencyfunc