Penggunaan MySQL SELECT INNER JOIN yang salah
P粉022285768
P粉022285768 2024-02-25 22:06:14
0
2
461

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

membalas semua(2)
P粉055726146

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

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan