Телефонный столик
+----------------+-------------+
| Field | Type |
+----------------+-------------+
| f_id | int(15) |
| f_client_id | int(11) |
| f_phone_type | varchar(50) |
| f_phone_number | varchar(13) |
+----------------+-------------+
Таблица клиентов
+-----------------------------+--------------+------+-----+
| Field | Type | Null | Key |
+-----------------------------+--------------+------+-----+
| f_id | int(15) | NO | PRI |
| f_first_name | varchar(13) | YES | MUL |
| f_mi | char(1) | YES | |
| f_last_name | varchar(20) | NO | MUL |
+-----------------------------+--------------+------+-----+
Предположения:
- Каждая запись в «Таблице телефонов» принадлежит одной записи в «Таблице клиентов».
- Каждая запись в «Таблице клиентов» может содержать 0 или более записей в «Таблице телефонов».
- Простой перевод: клиент может иметь 0 или более телефонных номеров
При стандартном соединении LEFT или INNER я получаю что-то вроде этого:
+------------+------------+--------------+
| name | Phone Type | Phone Number |
+------------+------------+--------------+
| John Smith | Home | 712-555-6987 |
| John Smith | Work | 712-555-1236 |
+------------+------------+--------------+
Мне нужен запрос, который даст мне рабочие и домашние номера, которые принадлежат данному клиенту:
+------------+----------------+--------------+
| Name | Work Number | Home Number |
+------------+----------------+--------------+
| John Smith | 712-555-1236 | 712-555-6987 |
+------------+----------------+--------------+
Можно ли выполнить ЛЕВОЕ или ВНУТРЕННЕЕ объединение, а затем объединить эти результаты в одну строку? Я видел похожие вопросы по этому вопросу, но приведенные примеры были гораздо более сложными, чем то, что я делаю:
Подобные вопросы
Спасибо