Фактическое необходимое соответствие не ясно в ОП, но вы можете попробовать что-то вроде:
Select stuff.stuffs
From MainTable
Left Join TableX As X1
On ( MainTable.Type = 1 And X1.1 = ...)
Or ( MainTable.Type = 2 And X1.2 = ...)
Учитывая, что вы добавили в ОП и в комментариях, все еще не ясно, ищите ли выстроки из TableX, которые удовлетворяют либо условию, либо одному и только одному из условий.Тем не менее, для полноты вот что:
Любое условие: мое оригинальное решение выше и решение, добавленное вами к вашему сообщению.
Одно и только одно из условий:
Select stuff.stuffs
From MainTable
Left Join TableX As X1
On X1.1 = ...
Left Join TableX As X2
On X2.2 = ...
Where ( MainTable.Type = 1 And X1.PK Is Not Null And X2.PK Is Null )
Or ( MainTable.Type = 2 And X2.PK Is Not Null And X1.PK Is Null )
В оригинальном сообщении отсутствует какое-либо понятие ссылок на внешние ключи из TableX в MainTable.Таким образом, как правило, я бы подумал что-то вроде:
Select stuff.stuffs
From MainTable
Left Join TableX As X1
On X1.FK = MainTable.PK
Left Join TableX As X2
On X2.FK = MainTable.PK
Where ( MainTable.Type = 1 And X1.Col1 = ... And X2.PK Is Null )
Or ( MainTable.Type = 2 And X2.Col1 = ... And X1.PK Is Null )