我想做这样的事情(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。
答案 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