我有一个课程列表(可以打开或关闭)和一个用户列表(可以注册一个或多个课程)。
我有三个表:usuarios(用于用户),cursos(用于课程)和cursosUsuarios(将两者链接起来以知道谁在哪里注册)。
我想显示未注册特定用户(即UID 18)的可用课程列表。
我正在尝试此查询,但无法正常工作:
SELECT cursos.cursoID, cursos.nombreCurso, cursos.cursoFechaInicio,
cursos.modalidadCurso, cursos.estadoCurso,
cursosUsuarios.userID, cursosUsuarios.cursoID
FROM cursos
LEFT JOIN cursosUsuarios ON cursos.cursoID = cursosUsuarios.cursoID
WHERE cursosUsuarios.userID NOT IN (
SELECT cursosUsuarios.userID
FROM cursosUsuarios
)
AND estadoCurso='abierto'
AND cursosUsuarios.userID = 18
这些是我的表:
CREATE TABLE cursos (
cursoID int unsigned not null auto_increment primary key,
nombreCurso char(100) not null,
cursoFechaInicio char(10) null,
modalidadCurso char(50) not null,
estadoCurso char(50) not null,
)
CREATE TABLE usuarios(
userID int unsigned not null auto_increment primary key,
)
CREATE TABLE cursosUsuarios (
cursosUsuariosID int unsigned not null auto_increment primary key,
userID int not null,
cursoID int not null
)
最佳答案
将该条件从WHERE
移到JOIN ON
子句,例如
FROM cursos LEFT JOIN cursosUsuarios
ON cursos.cursoID = cursosUsuarios.cursoID
AND cursosUsuarios.userID <> 18
WHERE estadoCurso='abierto'
关于mysql - 如何显示不在特定MySQL表中的项目列表?此查询无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38707268/