J'essaie de récupérer l'ensemble des "rôles" pour un user.id donné à l'aide d'une requête utilisant INNER JOIN combinée à une condition WHERE. Mais quelque chose s'est mal passé.
Ma base de données comporte quatre tables :
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
Ma requête :
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'
Mais cette requête ne renvoie aucune donnée. (Testé sur la carte SQL phpmyadmin.)
Comme Akina l'a déjà mentionné dans la section commentaires, il n'y a pas de valeur "libelle" dans le tableau "role", elle est égale à "Système", comme vous l'avez mentionné plus haut. C'est pourquoi vous n'obtenez aucune sortie. Corrigez-le sur "Système" dans la base de données MySQL et réessayez.
Utilisation :
https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=20570938deb2bec281d5070dd28bf19d 一个>
Ne mettez pas de guillemets simples autour des entiers, remplacez
WHERE a.id_user ='1'
更改为WHERE a.id_user = 1
.libelle = '系统'
在type_role
表中,不在role
dans le tableau