|
|
|
| Вопрос родился тут: http://softtime.ru/forum/read.php?id_forum=3&id_theme=80486
Вкратце: есть таблица клиентов, которые могут быть физ или юр лицами, общего у них мало, а то, что разное — хранится в разных таблицах. Примерно так:
Tab1. Список клиентов, общие поля
customerID
customerType (юр/физ)
customerEmail
customerPhone
customerLogin
customerPassword
Tab2. Список физлиц, со ссылкой на id клиента
fizID
customerID
fizFIO
fizPassport
fizBirthday
Tab3. Список юрлиц, со ссылкой на id клиента
yurID
customerID
yurCompany
yurBank
Вроде всё просто, но, допустим, надо вывести список клиентов в таком виде:
id, name
где name - это fizFIO или yurCompany, соответственно из 2 или 3 таблицы.
Как это реализовать? Самый простой способ, обойти в цикле всех клиентов по 1 таблице, и в зависимости от customerType делать дополнительный запрос во 2 или 3 таблицу (соответствено обработчиков результата у нас тоже будет два).
Главный вопрос в том, можно ли получить такой*** список клиентов одним запросом? Можно ли вставить условие в запрос, и JOIN'ить то или иное поле из одной из таблиц?
***Примечание: такой, потому что сделать join доп. даных из 2,3 таблиц к первой таблице и получить всё одной простынёй не выйдет, т.е. общий список всех клиентов в виде результата запроса к БД можно сделать очень упрощённым. | |
|
|
|
|
|
|
|
для: Zilog
(02.05.2011 в 14:38)
| | Правильно ли я понимаю, что id - это customerID, который ссылается на fizID и yurID? Тогда можно выбирать данные из таблиц физ.лиц и юр.лиц, а результат объединять при помощи UNION. | |
|
|
|
|
|
|
|
для: cheops
(02.05.2011 в 15:01)
| | >Правильно ли я понимаю, что id - это customerID, который ссылается на fizID и yurID? Тогда можно выбирать данные из таблиц физ.лиц и юр.лиц, а результат объединять при помощи UNION.
да, криво написал, всё верно поняли. Для удобства зафиксируем (с небольшой корректировкой):
id, customerID, name
---
не понял, как можно объеденить в один результат две совершенно разные таблицы? | |
|
|
|