Множественные внутренние соединения MS Access

У меня есть этот sql запрос

SELECT e.permission_name 
FROM ((((users_roles a 
          INNER JOIN users b 
          ON a.user_id = b.id) 
         INNER JOIN roles c 
         ON a.role_id = c.id) 
        INNER JOIN roles_permissions d 
        ON c.id = d.role_id) 
       INNER JOIN permissions e 
       ON d.permission_id = e.id) 
WHERE b.id = :id

Я добавил круглые скобки, поскольку MS Access требует этого, но он не работает.

Я использую MS Access в PHP

Что именно не работает?

Nick 24.05.2018 04:23

Удалите (), позвольте доступу добавить их обратно.

xQbert 29.05.2018 19:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
302
2

Ответы 2

Я не думаю, что вам нужно ставить скобки, это может привести к синтаксической ошибке. Просто снимите брекеты

SELECT e.permission_name 
FROM users_roles a 
INNER JOIN users b ON a.user_id = b.id
INNER JOIN roles c ON a.role_id = c.id
INNER JOIN roles_permissions d N c.id = d.role_id
INNER JOIN permissions e ON d.permission_id = e.id
WHERE b.id = :id

Я бы посоветовал написать такой запрос:

SELECT p.permission_name 
FROM (((users_roles as ur INNER JOIN
        users as u
        ON ur.user_id = u.id
       ) INNER JOIN
       roles as r 
       ON ur.role_id = r.id
      ) INNER JOIN
      roles_permissions as rp
     ON r.id = rp.role_id
     ) INNER JOIN
     permissions as p
     ON rp.permission_id = p.id
WHERE u.id = :id;

Единственное реальное отличие от вашей версии - это использование as для псевдонимов таблиц.

Другие вопросы по теме