Как правильно составить SELECT запрос с двумя внешними ключами?

Как можно выполнить запрос для поиска объекта класса Person, у которого указан номер TEL_NUMBER как home_phone или work_phone? Варианты, которые я рассмотрел, включают использование .has и .join, но есть ли другие возможности?
  • 6 ноября 2023 г. 13:52
Ответы на вопрос 1
Для составления SELECT запроса с двумя внешними ключами, вы можете использовать конструкцию JOIN или подзапросы в предложении WHERE.

Пример с использованием JOIN:
```sql
SELECT p.*
FROM Person p
JOIN PhoneNumber ph ON p.id = ph.person_id
WHERE ph.number = p.home_phone OR ph.number = p.work_phone;
```

Пример с использованием подзапроса:
```sql
SELECT *
FROM Person
WHERE id IN (
    SELECT person_id
    FROM PhoneNumber
    WHERE number = home_phone OR number = work_phone
);
```

Оба этих варианта позволяют выполнить SELECT запрос для поиска объекта класса Person по номеру телефона, указанному как home_phone или work_phone. Выбор конкретного варианта зависит от особенностей вашей схемы данных и предпочтений в использовании JOIN или подзапросов.
Похожие вопросы