2012-03-15 67 views
2

我願做這樣的事情(與僞SQL的混合):將SQL子查詢作爲布爾型字段返回?

讓我們假設在這個例子中,有一個獨立的電話號碼錶:

人:爲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

後一些示例數據.. – Teja 2012-03-15 15:58:03

+0

我將不得不把大量的數據,如果我添加了添加樣本數據......因爲我的情況是很多更復雜比這個。它涉及4或5表...我只是想知道如何返回一個變量與真或假,如果一個ID退出另一組ID的 – jere 2012-03-15 16:29:14

回答

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 
+0

謝謝!當我下班回家時會試試這個,我會讓你知道的 – jere 2012-03-15 18:52:48