我有一个表客户端和表 client_evolution ,具有OneToMany关系。在 client_evolution 表中,我有3个当前客户端条目。使用Left Join拉取数据我总是得到 client_evolution 中id最小的第一个条目,我需要的是最新的一行。我试图做subselect但它没有工作。
->addSelect('(
SELECT ce.id
FROM ClientEvolution cev
WHERE cev.client = c.id
GROUP BY cev.client
ORDER BY cev.id DESC) AS cevol')
我需要此表中的多个字段。 请帮忙。
答案 0 :(得分:0)
GROUP BY是您为每个客户端只获得一个条目的原因,您的SELECT也缺少客户端表。这将按照客户端ID的顺序为您提供两个表之间的所有字段。要仅获取每个客户ID的最新行,请查看MySQL Group By to display latest result
->addSelect('(
SELECT *
FROM ClientEvolution cev, Client c
WHERE cev.client = c.id
ORDER BY cev.client, cev.id DESC)')