Я хочу сделать запрос, который использует select для отображения отчетов в таблице, содержание таблицы, которое будет отображаться, зависит от даты транзакции и группы пользователей, которые вошли в систему, если группа пользователей - обычный пользователь, пользователь только могут видеть отчеты, которыми он / она управляет, только если группа пользователей является администратором, тогда пользователь может видеть все отчеты.
вот пример моего незавершенного запроса: (отредактировано)
SELECT store_id, type, tx_date, status, amount1, amount2, total
FROM table1 t1 JOIN user_rights us ON t1.store_id = us.store_id
WHERE us.user_group IS NOT 'admin' AND us.uname = {logged in username} AND tx_date = {date inputed by user}
как видите, этот запрос отображается только тем, что видят обычные пользователи. Моя проблема, когда пользователь, который вошел в систему, является администратором. Запрос не может отобразить все данные, о которых сообщается, потому что данные уже отфильтрованы.
Так что я думаю, что запрос только для администратора: (отредактировано)
SELECT t1.store_id, type, tx_date, status, amount1, amount2, total
FROM table1 t1 JOIN user_rights us ON t1.store_id = us.store_id
WHERE tx_date = {date inputed by user}
Вот как выглядит таблица user_rights
| rights_id | uname | user_group | store_id |
---------------------------------------------------------
| r0001 | a0001 | admin | a1 |
| r0002 | u0001 | user | a2 |
| r0003 | u0002 | user | b1 |
| r0004 | u0002 | user | b2 |
Пример результата, который я хочу получить admin (a0001) для даты (14/4/20) выглядит так:
| store_id | type | tx_date | status | amount1 | amount2 | total |
--------------------------------------------------------------------------------
| a1 | groc | 14/4/20 | done | 10000 | - | 10000 |
| a2 | supp | 14/4/20 | pend | 30000 | 50000 | 80000 |
| b1 | supp | 14/4/20 | pend | 40000 | 20000 | 60000 |
| b2 | supp | 14/4/20 | pend | 30000 | 50000 | 80000 |
Пример результата, который я хочу получить для пользователя (u0001) для даты (14/4/20), выглядит следующим образом:
| store_id | type | tx_date | status | amount1 | amount2 | total |
--------------------------------------------------------------------------------
| a2 | supp | 14/4/20 | pend | 30000 | 50000 | 80000 |
Пример результата, который я хочу получить для пользователя (u0002) на дату (14/4/20), выглядит следующим образом:
| store_id | type | tx_date | status | amount1 | amount2 | total |
--------------------------------------------------------------------------------
| b1 | supp | 14/4/20 | pend | 40000 | 20000 | 60000 |
| b2 | supp | 14/4/20 | pend | 30000 | 50000 | 80000 |
есть ли какой-либо возможный способ использовать только выбор для решения эта проблема?
edit: я делаю ошибку раньше, таблица 1 содержит данные транзакции магазина, я добавила некоторые подробности из примера, я изменила таблицу пользователя в таблицу user_rights, потому что я думаю, что моя информация неясна Я надеюсь, что информация, которую я добавлю, поможет вам лучше понять, в чем заключается моя проблема. Извините за большое редактирование, потому что я впервые публикую здесь.
примечание: поскольку это единственная цель отчетности, это должно быть выполнено только в утверждении select. Создание новых таблиц или других процедур считается ненужным, поскольку этот запрос используется только для одного отчета.