Rumah  >  Soal Jawab  >  teks badan

Penggunaan MySQL SELECT INNER JOIN yang salah

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粉022285768P粉022285768236 hari yang lalu398

membalas semua(2)saya akan balas

  • P粉055726146

    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.

    balas
    0
  • P粉691958181

    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

    balas
    0
  • Batalbalas