【问题标题】:DQL\SQL query in Symfony2. Many tablesSymfony2 中的 DQL\SQL 查询。许多表
【发布时间】:2015-03-26 18:52:34
【问题描述】:

我有一个关于 DQL 查询的问题。

我有这些表:“orders”、“orders_kitchen”、“orders_institution”和“variants”。

从“变体”表中,我获得了已提供报价的订单 ID。

$orders = $em->createQuery("SELECT o
                FROM AppBundle:Orders o
                JOIN AppBundle:OrdersInstitution oi
                WHERE oi.idInstittuion = :institution AND o.idorder =                             oi.idOrder AND o.finalDeal IS NULL
                ORDER BY o.idorder DESC")
            ->setParameter("institution",$institution)->getResult();

当客户离开订单时,他可以通过三种方式进行:

  1. 不要在“orders_institution”表中添加记录,某些机构会在某些类型的美食 id 表中添加条目
  2. 不在任何表格中添加条目
  3. 在“orders_kitchen”表中添加一个条目,某些类型的美食 ID 适用于该机构

我需要找到所有没有选择任何机构的订单,并且没有一种菜系,或者至少有一个厨房与该机构合作(这可以是一个数组)。

而且我不想选择 ID 在“变体”表中的订单。

【问题讨论】:

  • 我不太明白,看起来有点乱,你想选择所有有(没有机构也没有菜式)或(有一种厨房而那个厨房应该有)的订单机构)?
  • 很难说。我会选择以下所有订单: - 没有任何美食或任何机构; - 或有该机构工作的美食; - 并且这个订单 ID 不在我上面的查询中

标签: php symfony doctrine-orm dql


【解决方案1】:

您可以尝试使用 SQL 之类的东西(DQL 在连接很多时表现不佳):

   $sql =  'SELECT * FROM Orders o JOIN
(SELECT o1.id FROM Orders o1 WHERE o1.cuisine IS NULL OR o1.institution IS NULL) o1  JOIN
(SELECT * FROM Orders o2 INNER JOIN Cuisine c ON c.insitution_id =  '.$institution_id.') o2 JOIN (your query);';

应该这样做,而不是 SQL 专家,我通常最终会尝试直到我得到它!

我不认为它是正确的,但至少它是一个开始:p

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    相关资源
    最近更新 更多