Php 条令查询连接子查询语法
我一直在尝试将以下原始sql转换为dql,但四个小时都无法完成,你能帮我吗? 这个查询在数据库中找到重复的哈希,并给我订单的IDPhp 条令查询连接子查询语法,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,我一直在尝试将以下原始sql转换为dql,但四个小时都无法完成,你能帮我吗? 这个查询在数据库中找到重复的哈希,并给我订单的ID SELECT h.order_id FROM `Hash` h INNER JOIN (SELECT `order_id`,hash FROM `Hash` GROUP BY `hash` HAVING COUNT(*) > 1 ) dt ON h.hash=dt.hash ; 现在我的dql: SELECT h FROM PaymentBundle
SELECT h.order_id
FROM `Hash` h
INNER JOIN (SELECT `order_id`,hash
FROM `Hash`
GROUP BY `hash`
HAVING COUNT(*) > 1
) dt ON h.hash=dt.hash ;
现在我的dql:
SELECT h FROM PaymentBundle:Hash h
JOIN
(SELECT h1.order, h1.hash FROM PaymentBundle:Hash h1 GROUP BY h1.hash HAVING COUNT(h1) > 1)
dt WITH h.hash = dt.hash
但是h1.order给出了语法错误,以及其他所有操作:
[Semantical Error] line 0, col 40 near '(SELECT h1.hash': Error: Class '(' is not defined.
我尝试将其作为子查询:
$subDql = 'SELECT h1 FROM PaymentBundle:Hash h1 GROUP BY h1.hash HAVING COUNT(h1) > 1';
$subQuery = $this->getEntityManager()
->createQuery($subDql);
$dql = 'SELECT h FROM PaymentBundle:Hash h JOIN ('.$subQuery->getDQL().') dt ON h.hash = dt.hash';
$query = $this->getEntityManager()
->createQuery($dql);
return $query->getResult();
它给了我:
[条令\ORM\Query\QueryException]
[语义错误]第0行,第40列“从中选择h1”:错误:类
没有定义
[条令\ORM\Query\QueryException]
从PaymentBundle中选择h:哈希h连接选择h1
PaymentBundle:按h1对h1组进行哈希。COUNTh1大于1 dt的哈希打开
h、 hash=dt.hash
我的解决方案:
$rsm = new ResultSetMappingBuilder($this->getEntityManager());
$rsm->addRootEntityFromClassMetadata('PaymentBundle:Hash', 'h');
$qb = $this->getEntityManager()->createNativeQuery("
SELECT h.id, h.order_id
FROM `Hash` as h
INNER JOIN (SELECT `order_id`,hash
FROM `Hash`
GROUP BY `hash`
HAVING COUNT(*) > 1
) dt ON h.hash = dt.hash
", $rsm);
return $qb->getResult();
据我所知,条令查询根本不接受子查询。在之前做子查询,然后输入返回到主查询的结果。我按你说的那样尝试过,它不起作用,请检查我的更新