Rumah > Soal Jawab > teks badan
Saya cuba mendapatkan semula set "peranan" untuk pengguna tertentu.id menggunakan pertanyaan menggunakan INNER JOIN digabungkan dengan keadaan WHERE. Tetapi ada sesuatu yang tidak kena.
Pangkalan data saya mempunyai empat jadual:
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
Pertanyaan saya:
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'
Tetapi pertanyaan ini tidak mengembalikan data. (Diuji pada papan SQL phpmyadmin.)
P粉0557261462024-02-26 15:50:19
Seperti yang telah Akina sebutkan di bahagian komen, tiada nilai "libelle" dalam jadual "peranan", ia sama dengan "Système", seperti yang anda nyatakan di atas. Itulah sebabnya anda tidak mendapat sebarang output. Betulkannya kepada "Sistem" dalam pangkalan data MySQL dan cuba lagi.
P粉6919581812024-02-26 13:57:22
Penggunaan:
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 一个>
Jangan letakkan petikan tunggal di sekitar integer, gantikan WHERE a.id_user ='1'
更改为 WHERE a.id_user = 1
.
libelle = '系统'
在 type_role
表中,不在 role
dalam meja