0

일부분은 SQL alchemy로 쿼리를 생성합니다. 하나의 조인으로 쿼리에 대해 매우 잘 작동하는이 개체가 있습니다.여러 조인 쿼리 sqlalchemy

** ORM 모델이 있지만 실제가 아니기 때문에 기본 키를 사용할 수 없습니다. 조인 생성에 대한

q = select(self.selectObj._select 
    ).select_from(
     self.joinObj._join 
    ).where(
     and_(*self.whereObj._where) 
    ).group_by(
     *self.selectObj._groupby 
    ).order_by(
     self.selectObj._orderby 
    ).limit(
     self.selectObj._limit 
    ).having(
     self.selectObj._having 
) 

나는이 방법이 있습니다

def get_joins(self, first, leftTable, rightTable, leftTableColumn, rightTableColumn, outer): 
    if first: 
     self._join = join(leftTable, rightTable, leftTableColumn == rightTableColumn, full=outer) 
     first = False 
    else: 
     self._join = self._join + join(leftTable, rightTable, leftTableColumn == rightTableColumn, full=outer) 

내가 아는하지는는, 내가 생성 할 수있는 방법, 얻을 연결할 등이 이상이 select_from 절에서 사용을 조인 . 어떤 생각?

감사 최종 결과에서이 같이 있어야한다

: 사전에 많은 :

SELECT a.dev, b.asha, c.unk 
FROM a 
    FULL OUTER JOIN b ON a.dev = b.devicb 
    FULL OUTER JOIN c ON a.dev = c.devicc 
WHERE 
    a.cust = 'SNTC' AND 
    b.cust = 'SNTC' AND 
    c.cust = 'SNTC' AND 
    a.invent = '10' AND 
    b.invent = '10' AND 
    c.invent = '10' 
+0

엄밀히는, 기본 키가없는 ORM 모델을 가질 수 없습니다 그들이 진짜 여부를 수 말하기. 당신이 코어를 사용하고있는 것 같아요. –

+0

예, ORM에 기본 키가 있지만 올바르게 매핑되지 않았습니다. –

+0

@ IljaEverilä가 질문을 수정했습니다. 죄송합니다. 핵심을 사용하고있는 것 같습니다. –

답변

0

나는이 방법으로 해결 바로 가입 이전에 .join invoquing 만 사용 오른쪽 테이블. 방법에 대한 self._join.join(rightTable,...)

완벽한 솔루션 :

def get_joins(self, first, leftTable, rightTable, leftTableColumn, rightTableColumn, outer): 
    if first: 
     self._join = join(leftTable, rightTable, leftTableColumn == rightTableColumn, full=outer) 
     first = False 
    else: 
     self._join = self._join.join(rightTable, leftTableColumn == rightTableColumn, full=outer)