【问题标题】:How to retrieve all unanswered Q(uestion)?如何检索所有未回答的问题)?
【发布时间】:2014-05-19 15:41:12
【问题描述】:

我在 Symfony2/Doctrine2 中开发了一个问题/答案模块(有点像 StackOverflow,但用于另一个主题)。

我只想检索所有没有答案的问题。我有两个表,问题和答案(谁有 question_id)。我如何在 DQL/Doctrine 中做到这一点?

问题

-id

-作者

-日期

-内容

-...

回答

-id

-作者

-日期

-内容

-question_id


  • 我尝试过 NOT,但它似乎在 DQL 中不起作用。
  • 我尝试了一个关于问题的 LEFT JOIN 小技巧和一个总是错误的条件 (WHERE q.id
  • 我尝试使用 COUNT(),但我需要所有行结果,并且 MySql 不会为不存在的 COUNT(q.reponses) 返回行...

任何帮助不胜感激!

谢谢

【问题讨论】:

  • 你需要展示你的表结构。如果不查看您的数据,很难告诉您要查询什么。
  • 数据结构很简单,但我编辑是为了更明确

标签: mysql symfony doctrine-orm


【解决方案1】:

您对“左连接的小技巧”的引用是正确的答案,除非您正在测试错误的列 - 您需要检查 answer 是否为空:

select q.*
from question q
left join answer a on a.question_id = q.id
where a.question_id is null

实际上,您可以测试左连接表中的任何列是否为空(因为如果连接失败,它们都将为空),但我倾向于检查我加入的同一列,因此优化器必须处理尽可能少的列。

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 2021-09-13
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多