私は現在のユーザがどのユーザの役割に属しているかを示すPHPスクリプトを作成しています。 データはmySQLにあり、私が望むのは、使用可能なすべてのロールを表示し、すべてのロールを表示し、ユーザーの所在を示します。なぜこのmySQL LEFT JOINは機能しませんか? WHERE句にすることはできますか?
これは、ここでは役割がある
CREATE TABLE roles(
roleID int unsigned not null auto_increment primary key,
nombreRol char(50) not null
)
私の役割テーブルです:
registered
pending
student
former-student
、これは役割テーブル
CREATE TABLE rolesUsuarios (
rolesUsuariosID int unsigned not null auto_increment primary key,
userID int not null,
nombreRol char(50) not null
)
でusuariosテーブルを接続するテーブルであります
私はLEFTを作成しようとしているが、このように登録しよう:
SELECT
roles.nombreRol,
rolesUsuarios.userID
FROM roles
LEFT JOIN rolesUsuarios
ON roles.nombreRol = rolesUsuarios.nombreRol
WHERE rolesUsuarios.userID = 183
(私はちょうどクエリが動作していることを確認し、現時点では、セキュリティに関係していないよ)の例では
、ユーザ183はロールをとの学生と登録しています。
意図した結果は次のようにする必要があります:
nombreRol -------- userID
registered ------- 183
pending ---------- NULL
student ---------- 183
former-student --- NULL
しかし、私は代わりに、この結果を得る:
nombreRol -------- userID
registered ------- 183
student ---------- 183
にはどうすれば参加変更されることがあり?あなたのwhere
句がinner join
にleft join
を回している
'OR .... IS NULL' –
@ PM77-1 - Nope。 – GurV