Mauvaise utilisation de MySQL SELECT INNER JOIN
P粉022285768
P粉022285768 2024-02-25 22:06:14
0
2
486

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粉022285768
P粉022285768

répondre à tous(2)
P粉055726146

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粉691958181

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal