Одна таблица должна хранить одну сущность. Не существует такой вещи, как «одна истинная таблица поиска» или «глобальная таблица». Также вы не должны рассматривать EAV. Этот вопрос предполагает, что все ваши таблицы имеют одинаковое расположение ...
Тем не менее, я с нетерпением жду больше повторений позже, когда оно не будет работать должным образом, так что ...
Вы должны использовать явные СОЕДИНЕНИЯ для разделения условий фильтрации и соединения
Select *
from
GlobalTable A
JOIN
GlobalTable B ON A.id = B.id
WHERE
A.tableId = 1 AND B.tableId = 2
Если вам нужно выполнить OUTER JOIN, вы можете написать это
Select *
from
(SELECT * FROM GlobalTable WHERE tableId = 1) A
LEFT JOIN
(SELECT * FROM GlobalTable WHERE tableId = 2) B ON A.id = B.id
Я бы предложил использовать индексированное представление, чтобы сохранить "tableA" и "tableB" как отдельные объекты, чтобы избежать этой постоянной фильтрации. Или не объединяй их ...