php - 学说左加入多对一

标签 php mysql symfony doctrine-orm

我有一个表 client 和表 client_evolution,具有 OneToMany 关系。在 client_evolution 表中,我有 3 个当前客户端的条目。使用 Left Join 提取数据我总是从 client_evolution 获得具有最小 id 的第一个条目,我需要的是最新行。我尝试过进行子选择,但没有成功。

->addSelect('(
    SELECT ce.id
    FROM ClientEvolution cev
    WHERE cev.client = c.id
    GROUP BY cev.client
    ORDER BY cev.id DESC) AS cevol')

我需要此表中的多个字段。 请提供任何帮助。

最佳答案

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

关于php - 学说左加入多对一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30870665/

相关文章:

php - 自动链接单词列表中页面文本中的关键字

MySQL - 仅当时间不为 0 时才获取时间(00 :00:00)

php - Doctrine2 ODM 限制不起作用/mongodb

php - React前端服务器和PHP/Symfony后端服务器之间共享 session

php - 搜索查询不起作用

jquery - symfony 表单在输入类型 ="choice"上使用 jquery 更改方法

php - 使用 JOIN 的 Mysql 查询(LINK 票证、员工、猫、评论)

php - 如何在 php 中使用 mySQL 数据库创建连接功能

php - MySQL TinyInt 值不会更新

左连接的Mysql查询性能问题