我正在嘗試(但失敗)將此 SQL 陳述句轉換為使用 Doctrine QB。我試圖從“訂單”表中獲取每個客戶的所有最新訂單記錄。
SELECT t1.* FROM order t1
JOIN (SELECT id, MAX(timestamp) timestamp FROM order GROUP BY customer) t2
ON t1.timestamp = t2.timestamp;
我已經嘗試了我在這里找到的幾乎所有相關解決方案,而我得到的最接近的是
$qb->join('App\Entity\Order', 'b', 'WITH', 'ro.date> b.date')
然而,它似乎適用于前 2 個結果,以下結果似乎只是抓住了任何東西。請注意,我正在使用查詢構建器,因為我有很多條件陳述句來添加“andWhere”和“orWhere”等。
uj5u.com熱心網友回復:
這應該會讓你得到你想要的結果
public function selectLastOrdersPerCustomer(){
return $this->createQueryBuilder('o')
->leftJoin(Order::class, 'o2', 'WITH', 'o2.customer = o.customer AND o.timestamp < o2.timestamp')
->where( 'o2.timestamp IS NULL' )
->innerJoin('o.customer', 'c')
->addSelect('c')
->groupBy('c.id')
->orderBy('o.timestamp', 'DESC')
->getQuery()
->getResult();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/331942.html
標籤:php mysql symfony 教义 每组最大 n
