Doctrine에서 그룹 최대 값 또는 최대 값을 포함하는 행을 어떻게 찾을 수 있습니까? SQL에서는 일반적으로 here과 같이 자체 조인을 사용하여이 작업을 수행합니다.Doctrine에서 Groupwise 최대 값 찾기
Doctrine에서 자체 관계를 설정하는 것이 가능하지만 더 좋은 방법이 있습니까? GroupWise에 최대의
Doctrine에서 그룹 최대 값 또는 최대 값을 포함하는 행을 어떻게 찾을 수 있습니까? SQL에서는 일반적으로 here과 같이 자체 조인을 사용하여이 작업을 수행합니다.Doctrine에서 Groupwise 최대 값 찾기
Doctrine에서 자체 관계를 설정하는 것이 가능하지만 더 좋은 방법이 있습니까? GroupWise에 최대의
예 : 행 포함 최대의
$query = Doctrine_Query::create()
->select("txs.id, txs.amount, txs.valid_from")
->from("Tx txs")
->where("txs.amount = (SELECT MAX(transact.amount) FROM tx transact WHERE txs.id = transact.id)");
예 :
$query = Doctrine_Query::create()
->select("txs.id, txs.amount, txs.valid_from")
->from("Tx txs")
->where("txs.id = (SELECT transact.id FROM tx transact WHERE transact.amount = (SELECT MAX(transactx.amount) FROM tx transactx))");
이 아마 유일한 방법 (또는 대부분의 청소) 아니지만, 난 그냥 모두를 시험하고 작동 .
이 질문은 정말 오래되었지만 Google에서 "doctrine groupwise max"에 대해 높은 점수를 매기므로 내 솔루션을 추가 할 것이라고 생각했습니다.
필자의 경우 부모 엔티티가 많았고 아이를 가장 많이 가진 필드를 선택하고 싶었습니다.
$qb
->select('child1.field')
->from(Entity::class, 'entity')
->join('entity.children', 'child1')
->leftJoin('entity.children', 'child2', 'WITH', 'child1.entity=child2.entity AND child1.id<child2.id')
->where('child2.id IS NULL')
;
자기 관계를 사용하지 않으려는 이유가 있습니까? – DrColossos
두 가지 이유 : 1) ORM 모델을 위반 한 것 같습니다. 즉, 객체가 자신의 사본을 가지는 것은 의미가 없습니다. 2)이 쿼리를 사용하는 경우가 거의 없으므로 관계를 추가 할 가치가없는 것 같습니다. –