У меня возникла проблема с работой с 3 таблицами «Клиент», «Покупка» и «Рабочий процесс».
CustomerID является первичным ключом для таблицы Customer и представляет собой 3-значный INT EG.. 123
PurchaseID — это первичный ключ для таблицы Purchase, представляющий собой 8-значный INT EG.. 12345678
Рабочий процесс содержит сведения о том, какой рабочий процесс запущен пользователем в данный момент. В зависимости от задачи он может варьироваться. Это может выглядеть так.
WFID EntityID Type Ref
771 123 Customer 1
772 12345678 Purchase 2
773 124 Customer 1
774 125 Customer 1
775 12345679 Purchase 2
Первичный ключ для этих двух таблиц смешивается с одним столбцом entityID, и это вызывает у меня большие трудности с присоединением. Мне удалось сделать это присоединение к оператору case после (ON Workflow.EntityID =), который выглядит следующим образом.
ON Workflow.EntityID =)
Case when ref = 1 THEN customer.customerID
When ref = 2 THEN purchase.purchaseID
END
Но запрос, который я запускаю, становится настолько медленным и не отвечает, что на самом деле это не решение.
Был ли у кого-нибудь другой опыт работы с соединениями такого типа, когда столбец сочетает в себе смесь двух первичных ключей из отдельных таблиц?
Я упускаю что-то очевидное?