MS Access несколько внутренних соединений - PullRequest
0 голосов
/ 24 мая 2018

У меня есть этот 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

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Я бы предложил написать запрос следующим образом:

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 для псевдонимов таблицы.

0 голосов
/ 24 мая 2018

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...