Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Проблема с вложенным запросом (Антон) 23/11/2011 - 21:02:19
      Re: Проблема с вложенным запросом (Akina) 23/11/2011 - 21:56:04
      Re: Проблема с вложенным запросом (Антон) 23/11/2011 - 23:30:22
      Re: Проблема с вложенным запросом (Akina) 24/11/2011 - 09:13:41
      Re: Проблема с вложенным запросом (Антон) 24/11/2011 - 16:13:30

> Original message text:
> From: Антон - 23/11/2011 - 21:02:19
> Subject:Проблема с вложенным запросом
> -----------------
> есть такой запрос для получения прав на раздел:
>
>
> SELECT
> `name`,
> 1 AS `u`, # юзер который запрашивает разделы
> `folder`.`folder` AS `f`, # раздел
> (
> SELECT
> IFNULL(#Сдесь я получаю права на определённый раздел для определённого юзера
> (
> SELECT max(`fr`.`access`)AS `a`
> FROM `_path` AS `p`
> JOIN `_fr` `fr` ON `p`.`parent` = `fr`.`folder` # Права групп на разделы
> JOIN `_ur` `ur` ON `ur`.`role` = `fr`.`role` # Группы в которых состоит юзер
> WHERE
> `p`.`filial` = `f` AND # `f` - это переменная из самого верхнего запроса,
> `ur`.`user` = `u` # `u` - эта тоже.
> GROUP BY `p`.`parent`
> ORDER BY `p`.`lavle` DESC
> LIMIT 1
> ),
> IF((# если нету записей в таблице с правами то смотрю существует ли данный юзер
> SELECT `_ur`.`user`
> FROM `_ur`
> WHERE `_ur`.`user` = `u` # переменная из самого верхнего запроса
> LIMIT 1
> ),1,0)
> )AS `a`
> )AS `a`
> FROM
> `cont_folder` AS `folder`
>
> Запросы внутри работают правильно, проблема в том что эти самые запросы "запоминают" значение `f`(id раздела) из первой строки. И во всех последующих строках используют его.
> Т.е первая строка ответа верная а все остальные естественно нет. Как с этим бороться?
>


From: Akina - 23/11/2011 - 21:56:04
Subject:Проблема с вложенным запросом
-----------------
Поскольку в запросе использутся более одной таблицы/подзапроса - каждой таблице и каждому подзапросу дайте свой УНИКАЛЬНЫЙ алиас, и для всех полей в условиях связывания, отбора, группировки и пр. в обязательном порядке укажите алиас конкретной таблицы или подзапроса. А ещё лучше - и каждому выбираемому полю в каждом (под)запросе также дайте уникальный алиас.

Источник проблемы - неоднозначность выбора одноимённых полей.

PS. Получение прав выполняется запросом GRANT (и косвенно несколькими иными способами). А то, что описано здесь - это обычная выборка.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
40747



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |