我在Symfony2上工作并尝试使用Doctrine执行所有查询。
我是一个拥有所有可能语法的新手,抱歉,如果这是一个noob问题......
在我的模型上,我有一些“专业人士”获得了多个“评论”。 我希望得到一些专业人士,可扩展性限制,并且每一个,只是最新的评论。
我试过了:
$dql = " SELECT
Pro,
review
FROM
Pro
LEFT JOIN (
SELECT Review FROM Review WHERE Review.id = Pro.id ORDER BY Review.date_crea LIMIT 1
) AS review
";
$em = $this->getEntityManager();
$rsm = new \Doctrine\ORM\Query\ResultSetMappingBuilder($em);
$rsm->addRootEntityFromClassMetadata('MyProject\Bundle\FrontBundle\Entity\Pro', 'p');
$query = $em->createNativeQuery($dql, $rsm);
但是我收到了这个错误:
SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at end of input
LINE 9
这是我的最后一次尝试,我用Doctrine上的不同方法和对象做了这个,比如createNativeQuery,createQuery,createQueryBuilder ......
有人成功吗?
谢谢!
答案 0 :(得分:0)
试试这个
SELECT
Pro,
r.Review
FROM
Pro
LEFT JOIN (
SELECT Review.id as id,Review FROM Review
group by Review.id
having Max(Review.date_create)
) AS r on Pro.id=r.id
编辑已替换为窗口功能
SELECT
Pro,
r.review
FROM
Pro
LEFT JOIN (
SELECT Review.id as id,Review, (rank() over( partition by Review.id order by Review.date_create )) as hit FROM Review
) AS r on Pro.id=r.id and r.hit=1;