Лучший способ объединения одного столбца с одной из двух таблиц? - PullRequest
1 голос
/ 08 января 2011

Мне нужно присоединить один столбец идентификатора к одной из двух разных таблиц.Я знаю, какой из них использовать, основываясь на столбце с именем reqIdType, который сообщает мне, какой тип идентификатора содержит столбец reqID.Вот что я делаю:

SELECT e.*,
reqfirstName =
CASE e.reqIDtype
    WHEN 'N' THEN
        u1.firstName
    ELSE c1.firstName
END,
reqLastName =
CASE e.reqIDtype
    WHEN 'N' THEN
        u1.lastName
    ELSE c1.lastName
END
repeat with email, etc.
FROM ers e
LEFT JOIN contacts c1 ON c.contactID = e.reqID
LEFT JOIN users u1 ON u1.uid = reqID

Мне интересно, есть ли лучший способ сделать это?Каким-то образом, где я мог проверить поле reqIDType, а затем выбрать все мои поля, иначе выбрать все остальные мои поля?То, как я делаю это сейчас, - это много грязного SQL.

1 Ответ

2 голосов
/ 08 января 2011

Обратите внимание, что у вас есть два несвязанных набора: ER, связанные с контактами, и ER, связанные с пользователями. Вы можете выбрать каждый набор отдельно и просто добавить результаты:

SELECT e.*, u.firstName, u.lastName /* etc.. */
FROM ers e JOIN users u ON u.uid = e.reqID
WHERE e.reqIDtype = 'N'
UNION ALL
SELECT e.*, c.firstName, c.lastName /* etc.. */
FROM ers e JOIN contacts c ON c.contactID = e.reqID
WHERE e.reqIDtype <> 'N'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...