学说离开加入多对一

时间:2015-06-16 14:34:09

标签: php mysql symfony doctrine-orm

我有一个表客户端和表 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')

我需要此表中的多个字段。 请帮忙。

1 个答案:

答案 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)')