Глюк (странности) с доступом >1 юзера

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Глюк (странности) с доступом >1 юзера

Сообщение support »

Как видите данные в таблице app_entity_35_values есть.
Сама запись в таблице app_entity_35 есть

А вот когда нужно выполнить это все одним запросом, вложенный запрос не выполняется, хотя запрос корректный:

Код: Выделить всё

select e.id from app_entity_35 e where e.id='268' and ((select count(*) as total from app_entity_35_values cv where cv.items_id=e.id and cv.fields_id='402' and cv.value='17')>0 or e.created_by='17')
Из за этого программа думает что записи нет или доступа нет и идет redirect на "Страница не найдена!"

У вас есть идеи почему так?
tax
Сообщения: 255
Зарегистрирован: 14 ноя 2016, 15:12
Имя: Николай
Откуда: --

Re: Глюк (странности) с доступом >1 юзера

Сообщение tax »

Сергей, спасибо!
Круг поиска сузился. Я попробую "по колдовать" над запросом.
Если бы проблема была в одной записи, то может было бы проще её удалить или пересоздать. Но тут проблема по всей сущности. Т.е. или структура сущности построена не правильно или что-то с запросом, что он на чём-то спотыкается.
tax
Сообщения: 255
Зарегистрирован: 14 ноя 2016, 15:12
Имя: Николай
Откуда: --

Re: Глюк (странности) с доступом >1 юзера

Сообщение tax »

что заметил...
запрос всей записи (268) показывает
SELECT * FROM `app_entity_35` WHERE `id`='268'
результат
2020-06-12_03.jpg
и теперь если изменить в запросе

Код: Выделить всё

e.created_by='9'
весь запрос

Код: Выделить всё

select e.id from app_entity_35 e where e.id='268' and ((select count(*) as total from app_entity_35_values cv where cv.items_id=e.id and cv.fields_id='402' and cv.value='17')>0 or e.created_by='9')
то получаем такой результат
2020-06-12_04.jpg
tax
Сообщения: 255
Зарегистрирован: 14 ноя 2016, 15:12
Имя: Николай
Откуда: --

Re: Глюк (странности) с доступом >1 юзера

Сообщение tax »

и... анализ не изменённого запроса
Note: #1003 /* select#1 */ select '268' AS `id` from `kinoprok_db272`.`app_entity_35` `e` where (('268' = '268') and (((/* select#2 */ select count(0) AS `total` from `kinoprok_db272`.`app_entity_35_values` `cv` where ((`kinoprok_db272`.`cv`.`items_id` = '268') and (`kinoprok_db272`.`cv`.`fields_id` = '402') and (`kinoprok_db272`.`cv`.`value` = '17'))) > 0) or ('9' = '17')))
tax
Сообщения: 255
Зарегистрирован: 14 ноя 2016, 15:12
Имя: Николай
Откуда: --

Re: Глюк (странности) с доступом >1 юзера

Сообщение tax »

такой вариант. руками в запросе заменил e.id на '268'

Код: Выделить всё

select e.id from app_entity_35 e where e.id='268' and ((select count(*) as total from app_entity_35_values cv where cv.items_id='268' and cv.fields_id='402' and cv.value='17')>0 or e.created_by='17')
такой запрос тоже работает. результат
2020-06-12_05.jpg
tax
Сообщения: 255
Зарегистрирован: 14 ноя 2016, 15:12
Имя: Николай
Откуда: --

Re: Глюк (странности) с доступом >1 юзера

Сообщение tax »

Ещё один рабочий вариант запроса

Код: Выделить всё

select e.id from app_entity_35 e where e.id='268' and ((select count(*) as total from app_entity_35_values cv where cv.items_id=e.id and cv.fields_id='402' and cv.value='17')>=0 or e.created_by='17') and e.parent_item_id in (select e.id from app_entity_29 e where e.id>0 )
изменил условие проверки
cv.value='17')>=0
З.Ы. заметил, что проблема проявляется на записях у которых есть подзадачи
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Глюк (странности) с доступом >1 юзера

Сообщение support »

Дело в том, что данный запрос корректный:

Код: Выделить всё

select e.id from app_entity_35 e where e.id='268' and ((select count(*) as total from app_entity_35_values cv where cv.items_id=e.id and cv.fields_id='402' and cv.value='17')>0 or e.created_by='17')
и он должен работать. Почему не работает, я не могу сказать.

В запросе мы выбираем все записи, которые либо назначены на пользователя (поле 402) либо пользователь есть создателем записи.
tax
Сообщения: 255
Зарегистрирован: 14 ноя 2016, 15:12
Имя: Николай
Откуда: --

Re: Глюк (странности) с доступом >1 юзера

Сообщение tax »

Сергей, если я в этом запросе изменяю знак ">" на знак ">=" то запрос отрабатывает.
Подскажите, в где этот запрос формируется, я попробую изменить и проверить на сайте.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Глюк (странности) с доступом >1 юзера

Сообщение support »

И что? Смысл тогда в этом запросе? Вам же нужно отобразить записи которые назначенные на человека. Должно быть именно ">0"

Не нужно подстраивать запрос. Я же говорю, он корректный. Нужно разобраться почему он именно у вас не срабатывает. Я у себя не могу такое повторить.

Если есть знакомые специалисты по mysql, покажите ситуацию, может что подскажут. У меня нет идей.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Глюк (странности) с доступом >1 юзера

Сообщение support »

В качестве эксперимента, сделайте бекап базы и разверните базу на другом сервере, например локально. можно просто базу, без приложения, и проверьте в phpmyadmin работают ли там эти запросы.
Ответить