2017-02-02 8 views
0

UNION으로 결합 된 두 개의 쿼리를 포함하는 SQL 쿼리를 구성하고 반환되는 행 수를 제한해야합니다.Yii2가 합집합 및 제한을 사용하여 쿼리를 구성합니다.

$query = $queryOne 
     ->union($queryTwo) 
     ->limit($this->limit) 
    ; 

문제는 LIMIT 절은 첫 번째 쿼리에 괄호로 묶여 있다는 점이다. 결과적으로 두 번째 쿼리에는 LIMIT 절이 없습니다.

서브 쿼리가 아닌 전체 쿼리에 대해 LIMIT 절을 지정해야합니다.

+0

을; 1) SQL이 단순하다면 sql을 직접 작성하십시오. 2) SQL이 복잡한 경우 SQL에서 뷰를 생성 한 다음 Yii에서 호출합니다. –

+0

@FabrizioCaldarelli님께 도움을 주신 데 감사드립니다. 원시 SQL을 해킹하지 않고 이미 솔루션을 발견했습니다. – Kolyunya

답변

1

당신은 다소 우아하게 문제를 해결하기 위해 세 번째 쿼리가 필요합니다

$query = (new Query) 
     ->select('*') 
     ->from([ 
      $queryOne->union($queryTwo), 
     ]) 
     ->offset($offset) 
     ->limit($limit) 
    ; 

Related을.

1

링크 답변 이하이 시도 : 나는 당신이 두 가지 솔루션을 가지고 있다고 생각

http://stackoverflow.com/questions/31017595/yii2-how-to-create-activedataprovider-with-union-query-and-sorting