Mysql 如何检索所有未应答的Q(uestion)?

Mysql 如何检索所有未应答的Q(uestion)?,mysql,symfony,doctrine-orm,Mysql,Symfony,Doctrine Orm,我在Symfony2/Doctrine2中开发了一个问答模块(有点像StackOverflow,但用于另一个主题) 我只想找回所有没有答案的问题。我有两张桌子,问题和答案(他们有问题id)。我如何在DQL/Doctrine中做到这一点 问题: -身份证 -作者 -日期 -内容 - 答复 -身份证 -作者 -日期 -内容 -问题id 我尝试过不在,但在DQL中似乎不起作用 我尝试了一个小技巧,在问题上使用左连接和一个总是错误的条件(其中q.id

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

我只想找回所有没有答案的问题。我有两张桌子,问题和答案(他们有问题id)。我如何在DQL/Doctrine中做到这一点

问题:

-身份证

-作者

-日期

-内容

-

答复

-身份证

-作者

-日期

-内容

-问题id


  • 我尝试过不在,但在DQL中似乎不起作用
  • 我尝试了一个小技巧,在问题上使用左连接和一个总是错误的条件(其中q.id<0)
  • 我尝试使用COUNT(),但我需要所有的行结果,MySql不会为不存在的COUNT(q.responses)返回行
任何帮助,谢谢

谢谢

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


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

您需要显示表结构。在看不到数据的情况下,很难告诉您要查询什么。数据结构非常简单,但我编辑它是为了更明确
select q.*
from question q
left join answer a on a.question_id = q.id
where a.question_id is null