@aassdds
Люблю борщ и PHP

Как сделать SQL JOIN на разные таблицы, в зависимости от того что есть в первой таблице?

Добрый день
Есть таблица:
id - int 11
client_id - int 11
driver_id - int 11

записи в этой таблице могут содержать ЛИБО client_id, либо driver_id, но никак не одновременно

так же есть 2 таблицы : clients и drivers

мне нужно вытащить все записи из первой таблицы, и если в соответствующей записи есть client_id то нужен join на тбл clients, ну а если в соответствующей записи есть driver_id - то join на тбл drivers

Можно ли это сделать одним запросом ?
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 2
petermzg
@petermzg
Самый лучший программист
Можно
select * from table
left join clients cl on cl.id = client_id
left join drivers dr on dr.id = driver_id

И у вас будут NULL в полях, где отсутствуют записи.
Ответ написан
Комментировать
@mletov
Что-то мне подсказывает, что база некорректно спроектирована.
Таблицы clients и drivers имеют одинаковый набор полей? Если да, то лучше слить их в одну, различать по признаку, а в оригинальной таблице оставить одно поле ClientDriverId.

Если же все-таки по вашей схеме то что-то типа

SELECT COALESCE(clients.field1, drivers.field1),
             COALESCE(clients.field2, drivers.field2)
            ...
FROM table
LEFT JOIN clients
ON table.client_id=clients.id
LEFT JOIN drivers
ON table.driver_id=drivers.id


Но опять же, структура должна быть одинаковая
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы