Maison > Questions et réponses > le corps du texte
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.)
P粉0557261462024-02-26 15:50:19
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.
P粉6919581812024-02-26 13:57:22
Utilisation :
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 一个>
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