Условное Внутреннее объединение

я хочу смочь к внутреннему объединению две таблицы на основе результата выражения.

, Что я пробовал до сих пор:

INNER JOIN CASE WHEN RegT.Type = 1 THEN TimeRegistration ELSE DrivingRegistration AS RReg
ON
RReg.RegistreringsId = R.Id

RegT является соединением, которое я сделал незадолго до этого соединения:

INNER JOIN RegistrationTypes AS RegT ON R.RegistrationTypeId = RegT.Id

Этот сценарий SQL не работает.

Так, в целом, если Тип равняется 1, то он еще должен присоединиться на таблице TimeRegistration , он должен присоединиться на DrivingRegistration.

Решение:

В моем избранном операторе я выполнил следующие соединения:

INNER JOIN  RegistrationTypes AS RegT ON R.RegistrationTypeId = RegT.Id
LEFT OUTER JOIN TimeRegistration AS TReg ON TReg.RegistreringsId = R.Id AND RegT.Type = 1
LEFT OUTER JOIN DrivingRegistration AS DReg ON DReg.RegistreringsId = R.Id AND RegT.Type <>1

Затем я отредактировал мой где-пункт для вывода корректного, в зависимости от RegType, как это:

WHERE (CASE RegT.Type WHEN 1 THEN TReg.RegistreringsId ELSE DReg.RegistreringsId END = R.Id)
23
задан KristianB 1 September 2011 в 10:08
поделиться