У меня есть две таблицы.Таблица A:

Таблица B:

Также у меня естьфункция, которая возвращает табличное значение (1 и 3).
get_customer_id:

При выполнении запроса без псевдонима я получаювсе записи, удовлетворяющие предикату внутреннего соединения:
SELECT ID FROM TableA AS A
INNER JOIN TableB AS B ON B.IDb = A.ID
WHERE EXISTS (select ID from get_customer_id() AS GCI WHERE GCI.ID = ID)
и сообщение «Нет предиката соединения» в плане запроса.Хотя я ожидал увидеть только записи с ID = 1 и 3.
Я знаю, что проблему можно решить двумя способами.
1)
SELECT A.ID FROM TableA AS A
INNER JOIN TableB AS B ON B.IDb = A.ID
WHERE EXISTS (select ID from get_customer_id() AS GCI WHERE GCI.ID = A.ID)
2)
SELECT ID FROM TableA AS A
INNER JOIN TableB AS B ON B.IDb = A.ID
WHERE ID IN (select ID from get_customer_id())
Но я не могу понять, почему, если я не указываю псевдоним, он не возвращает то, что я ожидал, получается, что условие не выполняется?Почему я вижу предупреждение, только с точки зрения запроса, почему эта проблема не попадает в ошибку? Буду благодарен за любые ответы и рекомендации.Я не могу найти точное объяснение в Интернете ...