Вам нужно будет охватить ваши данные и ваши операторы SQL текущего пользователя.
Например, допустим, у вас есть таблица продаж и таблица пользователей. Функционально каждая продажа принадлежит пользователю. Таким образом, таблица продаж должна иметь внешний ключ, такой как user_id, который идентифицирует для каждой строки продажи строку в таблице пользователей, к которой относится эта продажа.
Тогда при поиске по продажам всегда следует добавлять "где user_id =?" в качестве первого фильтра вашего оператора SQL, прежде чем другие динамические фильтры, заменив? с идентификатором текущего вошедшего в систему пользователя.
Таким образом, все критерии фильтрации при поиске в таблице продаж сначала будут применены к текущему зарегистрированному пользователю. Если критерии фильтра в противном случае будут выбирать чьи-либо строки продаж, он больше не будет делать это из-за фильтра user_id.
Если у вас есть продажи, которые относятся ко всем агентам, помимо тех, которые относятся к конкретным агентам, у них, вероятно, будет какой-то маркер, либо agent_id 0, либо, возможно, NULL, либо какое-либо другое поле, которое идентифицирует их как доступные для поиска всеми. Это можно легко вставить в первый фрагмент WHERE в операторе SQL с соответствующими скобками, чтобы сохранить его вместе:
WHERE (agent_id = ? or agent_id IS NULL) AND other dynamic filter etc
WHERE (agent_id = ? or agent_id = 0) AND other dynamic filter etc
WHERE (agent_id = ? or all_agents_flag = 1) AND other dynamic filter etc