0

---- 使用 Symfony2.3.​​1 和 Doctrine2 完成 ----

抱歉,我希望我不会太笨,无法为我的问题找到合适的解决方案。我尝试建立一个查询几个小时。

SELECT * FROM product
    WHERE product_id in
    (
       SELECT product_id from (
          SELECT count(*) as result_amount, product_id FROM product_x_attribut
          JOIN productattribut on productattribut_id = productattribut.id
          WHERE (
            productkey = "price" and
            stringType = "premium"
          ) or (
            productkey = "size" and 
            stringType = "S"
          )
          GROUP BY product_id
          HAVING result_amount = 2
       ) as temp
    )
GROUP BY product_id
ORDER BY p0_.name ASC

这是在 phpmyAdmin 中运行良好的 SQL。

这可以看作

Select * from abc where abc.x in ( Select * from ( select * from ) as abcd )

所以有一个核心查询,我称之为 subSubQuery,围绕核心的第二个查询将被称为 subQuery,而外部查询只是外部查询,没有子查询。我可以用 Doctrine2 构建 subSubQuery。

但我不能像这样构建子查询

Select product_id from ( $subSubQuery->getQuery()->getDQL() )

我想做这样的子查询

$subQuery = $repositoryProduct->createQueryBuilder('product');
$subQuery->add('select', 'product_id');
$subQuery->add('from',$subSubQuery->getDQL() );
// However to set an alias is a miracle for me, this didnt work off course
$subQuery->add('as','tmp' );

这是子查询。我也无法构建外部查询

Select * from abc where abc.x in ( $subQuery->getQuery()->getDQL() )

我想这样做

$query->where(
  $query->expr()->in('product.id', $subQuery->getDQL() )
);

但我尝试使用 Doctrine2 来构建它,如下所示:

我很沮丧,我尝试了->getSQL(),->getDQL(),我尝试了尽可能多的方法来解决这个问题,并且我在谷歌中尝试了尽可能多的关键字我的手指能够写字...我希望有人可以帮助我找到解决方案...

非常感谢每一个有用的建议。

4

1 回答 1

0

我知道这样的陈述有效:

$qbGames->andWhere($qbGames->expr()->in('game.id',$qbGameId->getDQL()));

你的问题有点难以理解。考虑使用 pastebin 来显示当前存在的所有映射。然后可能会提出一个简单的查询?

我的 $qbGameId 查询是使用以下内容构建的:

   $qbGameId = $em->createQueryBuilder();

   $qbGameId->addSelect('distinct gameGameId.id');

   $qbGameId->from('ZaysoCoreBundle:Event','gameGameId');

   // Assorted joins and where conditions
于 2013-08-26T16:08:57.370 回答