Возможно ли подключить таблицу в зависимости от значения поля?

akxxiv

Новичок
Возможно ли подключить таблицу в зависимости от значения поля?

Поясню:
Есть таблица Юр Лиц : lps ( id | contractor_id | name ....)
Есть таблица Физ Лиц: nps ( id | contractor_id | name .... )
Есть таблица контрагентов: contractors (id, type), где type = np или lp

Как составить запрос для выбора всех контрагентов и их имен так,чтобы в зависимости от поля contractors.type подключалась либо таблица lps (type=lp), либо nps (type=np)

Если конечно возможно одни запросом это сделать.
 

rotoZOOM

ACM maniac
А такой способ не прокатит?
PHP:
SELECT c.id as id, c.type as type, lps.name as lps_name, nps.name as nps_name
FROM contractors c
LEFT JOIN lps ON lps.id=c.id
LEFT JOIN nps ON nps.id=c.id
а потом в результате выбирай lps_name либо nps_name в зависимости от type.
 

akxxiv

Новичок
Нет так не прокатит. Точнее прокатит (так щас и делаю), но не очень. ))
 

Вурдалак

Продвинутый новичок
Можно было бы сделать одну таблицу, добавив столбец «тип лица». В поля, которые не имеют смысла для физ. лица и наоборот, вписывать NULL. Почему бы и нет?
 

akxxiv

Новичок
Да можно конечно. Тут вопрос не в том, как выкрутиться и как спроектировать базу. Вопрос в запросе, можно ли его так составить или нет. И если да, то как.
 

prolis

Новичок
и так не прокатит?
Код:
SELECT c.id as id, c.type as type, if(type='lp', lps.name, nps.name) as name
FROM contractors c
LEFT JOIN lps ON lps.id=c.id
LEFT JOIN nps ON nps.id=c.id
 
Сверху