错误使用MySQL SELECT INNER JOIN
P粉022285768
P粉022285768 2024-02-25 22:06:14
0
2
432

我正在尝试使用 INNER JOIN 与 WHERE 条件相结合的查询来检索给定 users.id 的“角色”集。但事情出了问题。

我的数据库有四个表:

t_users : id, username, userpass, status, ...
t_action: id, id_user, id_role, id_type_role, ...
t_role: id, libelle, status
t_type_role: id, libelle, status

我的查询:

SELECT U.id AS ID, R.libelle AS ROLE, T.libelle AS TYPE
FROM t_user U
JOIN t_action A ON A.id_user = U.id
JOIN t_type_role T ON T.id = A.id_type_role
JOIN t_role R ON R.id = A.id_role
WHERE A.id_user = '1' AND R.libelle = 'System'

但是这个查询没有返回任何数据。 (在 phpmyadmin SQL 板上测试。)

P粉022285768
P粉022285768

全部回复(2)
P粉055726146

正如 Akina 在评论部分中已经提到的那样,表“role”中没有“libelle”值,它等于“Système”,正如您上面提到的那样。这就是您没有得到任何输出的原因。将其修复为 MySQL 数据库中的“System”并重试。

P粉691958181

用途:

SELECT u.id AS id,
       r.libelle AS role,
       t.libelle AS type
FROM users u
JOIN action a ON a.id_user = u.id
JOIN type_role t ON t.id = a.id_type_role
JOIN role r ON r.id = a.id_role
WHERE a.id_user =1 
AND t.libelle = 'System';

https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=20570938deb2bec281d5070dd28bf19d 一个>

不要在整数上加单引号,将 WHERE a.id_user ='1' 更改为 WHERE a.id_user = 1

libelle = '系统'type_role 表中,不在 role 表中

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板