Вернуть подзапрос SQL как логическое поле? - PullRequest
2 голосов
/ 15 марта 2012

Я хотел бы сделать что-то вроде этого (смесь SQL с псевдокодом):

давайте для этого примера предположим, что есть отдельная таблица телефонных номеров:

person: person_id, person_name, person_lastName
номер телефона: phonenmb_id, номер телефона_фон, phonenmb_person_id

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

В примере я хотел бы получить некоторые данные от человека, и, учитывая определенный номер телефона, вернуть TRUE, если у человека есть этот номер в списке номеров, или FALSE, если его нет.

Если кто-нибудь может дать подсказку о том, как сделать это напрямую с Doctrine и DQL, это было бы замечательно, в противном случае я просто переведу его на DQL сам.

1 Ответ

4 голосов
/ 15 марта 2012

Один из подходов состоит в том, чтобы выполнить внешнее соединение с таблицей телефонных номеров, используя 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
...