Если я не ошибаюсь, вам нужна новая итерация вашего запроса, чтобы возвращать те же результаты, что и ваш старый запрос (оба должны быть 1020).
Однако структура вашего нового запросас учетом таблиц, которые ранее не рассматривались как объединение (внутреннее или левое), поэтому у вас может быть случай дублирования данных из-за недостаточной привязки первичного ключа.
1) В исходном запросе вы только просматриваете "tx_holding "и не создает новых объединений. Ваши операторы ограничения ищут данные в разных таблицах, но не присоединяются напрямую к вашей базовой таблице и, поскольку они возвращают одно поле, оператор IN работает нормально.
2) В вашем новом запросе вы толькопривязка одного поля из "tx_asset" к вашей базовой таблице, так что, скорее всего, эта таблица имеет составной первичный ключ (2 или более полей в качестве ключевых полей), поэтому вы получите что-то вроде этого:
TX_HOLDING (CL)
ID
1
2
3
4
TX_ASSET (A)
HLID CLID
1 1
1 2
21
2 2
3 1
Поскольку вы объединяете таблицы только в одном поле (CL.ID = A.HLID), это создает двойственность, поскольку у вас есть 2 записи, которые равны1, но имеют другой вторичный первичный ключ.
Одним из возможных решений будет добавление еще одного оператора ON, связывающего CL.CLID = A.CLID, если эти 2 поля, конечно, соответствуют структуре вашей таблицы;Также учтите, что вы вызываете его в своем подзапросе, но на самом деле не используете его. Это будет распространяться на ваше второе соединение с "tbl_client".