Falsche Verwendung von MySQL SELECT INNER JOIN
P粉022285768
P粉022285768 2024-02-25 22:06:14
0
2
380

Ich versuche, den Satz von „Rollen“ für eine bestimmte Benutzer-ID abzurufen, indem ich eine Abfrage mit INNER JOIN in Kombination mit einer WHERE-Bedingung verwende. Aber etwas ist schief gelaufen.

Meine Datenbank enthält vier Tabellen:

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

Meine Anfrage:

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'

Aber diese Abfrage gibt keine Daten zurück. (Getestet auf dem phpmyadmin SQL-Board.)

P粉022285768
P粉022285768

Antworte allen (2)
P粉055726146

正如 Akina 在评论部分中已经提到的那样,表“role”中没有“libelle”值,它等于“Système”,正如您上面提到的那样。这就是您没有得到任何输出的原因。将其修复为 MySQL 数据库中的“System”并重试。

    P粉691958181

    用途:

    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表中

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!