Как выбрать несколько записей из нескольких таблиц одновременно - PullRequest
0 голосов
/ 23 мая 2010

У меня есть две таблицы, Customer и CustomerPhone.У клиента обычно есть несколько телефонных номеров, поэтому, когда я запускаю оператор select для клиента 101, я получаю несколько записей из-за нескольких телефонных номеров.

Все поля «Телефон» и «Факс» принадлежаттаблица CustomerPhone.Они считаются двумя записями в таблице CustomerPhone, тогда как остальные поля относятся к таблице Customer, которая представляет собой одну запись.

Что мне следует сделать, чтобы заполнить поле Телефон и факс в этом случае?Должен ли я сначала выполнить оператор select для CustomerPhone, а затем выполнить оператор select для Customer?

1 Ответ

2 голосов
/ 23 мая 2010

Я предполагаю, что ваша таблица CustomerPhone выглядит примерно так:

CustomerPhone
CustomerID int
Number varchar
PhoneType   phone | fax

Кажется, пользовательский интерфейс позволяет использовать только один обычный номер телефона и факса. Если это так, и у клиента есть только один телефон, один факс (но может не иметь ни одного), то есть уникальный индекс CustomerID / PhoneType в CustomerPhone, тогда вы можете получить всю информацию одним запросом:

SELECT c.*, phone.Number, fax.Number FROM Customer c 
LEFT JOIN CustomerPhone phone ON phone.CustomerID=c.CustomerID
LEFT JOIN CustomerPhone fax = fax.CustomerID=c.CustomerID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...