将SQL子查询返回为布尔字段?

时间:2012-03-15 15:56:46

标签: mysql doctrine-orm boolean

我想做这样的事情(sql与伪代码的混合):

我们假设这个例子中有一个单独的电话号码表:

person: person_id,person_name,person_lastName
phone_number: phonenmb_id,phonenmb_number,phonenmb_person_id

SELECT p.name, p.lastName, hasPhoneNumber = hasPhoneNumber(someNumber)

在示例中,我希望从一个人那里获得一些数据,如果某个人的号码列表上有该号码,则返回TRUE,如果没有,则返回FALSE。

如果有人能提供如何直接使用Doctrine和DQL的提示,那就太棒了,否则我自己就把它翻译成DQL。

1 个答案:

答案 0 :(得分:4)

一种方法是使用person_id和电话号码外连接到电话号码表,然后检查外连接是否满足以计算布尔值。

使用您的架构的示例:

SELECT p.person_name, p.person_lastName, 
  (pn.phonenmb_id IS NOT NULL) as hasPhoneNumber
FROM person p
  LEFT OUTER JOIN phone_number pn on pn.phonenmb_person_id = p.person_id 
                                 and pn.phonenmb_number = someNumber
GROUP BY p.person_name, p.person_lastName