Я пытаюсь заполнить свою таблицу названиями компаний, но все они взяты из другой таблицы (в зависимости от типа компании)
Так, например, у меня в текущей таблице есть "visiblebjectid", которыйравно «id» из таблицы «возможность».В этой таблице «возможность» нет названия компании, только «parentaccountid», который ссылается на «Id» в таблице «account», в которой имя известно.
Таким образом, относящийся к объекту из моей текущей таблицысовпадает с идентификатором в другой таблице, из которого мне нужно взять другой столбец, чтобы сопоставить его со столбцом в ДРУГОЙ таблице, чтобы получить имя.
Кто-нибудь знает, как это сделать?Я попробовал несколько левых объединений, но не могу сделать это правильно.
Я использую SQL Server.
Вот фрагмент моего кода из того, что я пробовал:
SELECT
e.regardingobjectid as CompanyId,
case
when e.regardingobjectid_entitytype = 'account' then a.name
when e.regardingobjectid_entitytype = 'lead' then l.companyname
when e.regardingobjectid_entitytype = 'opportunity' then o.name
when e.regardingobjectid_entitytype = 'incident' then a.name
when e.regardingobjectid_entitytype = 'contact' then a.name
when e.regardingobjectid_entitytype = 'salesorder' then a.name
end as Companyname
from emails e
left join opportunity o on e.regardingobjectid = o.id
left join account a on e.regardingobjectid = a.id
left join lead l on e.regardingobjectid = l.id
left join incident i on e.regardingobjectid = i.id
left join contact c on e.regardingobjectid = c.id
left join salesorder s on e.regardingobjectid = s.id
Это заполняет мою таблицу для категорий учетная запись, потенциальная возможность и возможность, но не для категорий инцидент, продавец и контакт.
В таблицах возможность, учетная запись и ведущая являются имена.Но в таблицах происшествия, контакта и продавца нет имен.В таблице счетов указаны имена компаний-поставщиков, контактных лиц и компаний, помеченных инцидентами.
Например, CompanyId из этого оператора выбора совпадает с 'id' из таблицы инцидентов.В этом инциденте с таблицей есть «accountid», который соответствует «id» в учетной записи таблицы, от которого мне нужно имя.
Мне удалось получить имя для «инцидента», но теперь мойимена для учетной записи исчезли ... Когда я набираю свои объединения следующим образом:
left join crm_systemuser u on p.owneridyominame = u.fullname
left join crm_incident i on i.id = p.regardingobjectid
left join crm_account a on a.id = i.blue10_accountid
left join crm_opportunity o on o.id = p.regardingobjectid
left join crm_account s on s.id = p.regardingobjectid
left join crm_lead l on l.id = p.regardingobjectid
Мои происшествия, потенциальные клиенты и возможности заполняются именами.Однако, когда я меняю порядок:
left join crm_account a on a.id = e.regardingobjectid
left join crm_systemuser u on e.owneridyominame = u.fullname
left join crm_incident i on i.id = e.regardingobjectid
left join crm_account on a.id = i.blue10_accountid
left join crm_opportunity o on o.id = e.regardingobjectid
left join crm_lead l on l.id = e.regardingobjectid
Мои инциденты снова пусты, но мои учетные записи заполнены именами ...