首頁  >  問答  >  主體

錯誤使用MySQL SELECT INNER JOIN

我正在嘗試使用 INNER JOIN 與 WHERE 條件相結合的查詢來檢索給定 users.id 的「角色」集。但事情出了問題。

我的資料庫有四個表:

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

我的查詢:

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'

但是這個查詢沒有回傳任何資料。 (在 phpmyadmin SQL 板上測試。)

P粉022285768P粉022285768236 天前403

全部回覆(2)我來回復

  • P粉055726146

    P粉0557261462024-02-26 15:50:19

    正如 Akina 在評論部分中已經提到的那樣,表“role”中沒有“libelle”值,它等於“Système”,正如您上面提到的那樣。這就是您沒有得到任何輸出的原因。將其修復為 MySQL 資料庫中的“System”並重試。

    回覆
    0
  • P粉691958181

    P粉6919581812024-02-26 13:57:22

    用途:

    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

    不要在整數上加上單引號,將 WHERE a.id_user ='1' 改為 WHERE a.id_user = 1

    libelle = '系統'type_role 表中,不在 role 表中

    回覆
    0
  • 取消回覆