2017-01-14 1 views
2

두 개의 열 usedmaxUsed이 있고 그 열을 비교하고 싶습니다. 이 오류가 없지만, SQL 쿼리가 잘못이 성명에서어떻게 andWhere 메서드에서 두 개의 열을 비교할 수 있습니까?

... AND ((`maxUse`=0) OR (`used` < 'maxUse'))... 

:

...->andWhere(['or', ['maxUse' => 0] , [ '<' , 'used' , 'maxUse' ]]).. 

실행 된 SQL은 다음과 같습니다

내 코드 (Yii2)입니다. 나는 문자열로 maxUse없는 'maxUse'을 비교하려면

나는이 필요하거나 (인용 독립적 인 데이터베이스)

...->andWhere(['or', ['maxUse' => 0] , '[[used]] < [[maxUse]]']) 
+0

하면 에러가 발생합니까? 이 문에서 –

+0

오류가 있지만 SQL 쿼리가 올바르지 않습니다. 나는 maxUse 'maxUse'를 문자열로 비교하려고한다. –

답변

0

:

...->andWhere('maxUse = 0 or used < maxUse'); 
0

...->andWhere(['or', ['maxUse' => 0] , '`used` < `maxUse`']) 

수정을 시도 배열의 첫 번째 값에 대해 ('및', '또는')를 사용할 수 있습니다. 조건은 재귀 적으로 돌 보았다.

$query->andWhere(['OR', ['AND', 
           ['oprator', 'attribute', 'value'], 
           ['oprator2', 'attribute2', 'value2'] 
         ], ['attribute3' => 'value3']]) 
내가 어떤 해결책을 찾기 마지막 원시 텍스트로 그것을 해결하지 못했습니다
+0

자,이 오류가 발생한다. 연산자 'USED' <'MAXUSE'는 두 개의 피연산자가 필요하다. –

+0

인용 표 및 열 이름을 추가 했으므로 – Ripper

+0

오류를 다시 시도하십시오.'연산자 [[USED]] <[[MAXUSE]] '에는 두 개의 피연산자가 필요합니다. 먼저 자신을 테스트 해주세요 :) –

0

:

... AND ((`maxUse`=0) OR (`used` < `maxUse`)) 
+0

나는 ('와', '또는')를 사용할 수 있음을 알고 있지만 거기에 있습니다. 아무 가치도, 나는 2 개의 란을 비교하고 싶다. –

관련 문제