Cita: quiero mostrar los registros(cursos) que están disponibles para el usuario pero sólo mostrar aquellos que no han sido agregados a su lista.
En realidad tu problema es más de base de datos que otra cosa.
Se resuelve cumpliendo exactamente lo que dices:
Código SQL:
Ver originalSELECT *
FROM cursos
WHERE curso_id NOT IN (SELECT curso_id FROM curso_alumnos WHERE perfil_usuario_id= $usuario);
Tienes que tener en cuenta que cuando necesitas un único resultado de la base de datos, y todas las condiciones se originan en otras consultas a la base, es muy probable que se pueda hacer una única consulta, algo más elaborada, que devuelva lo que necesitas.
Por eso existen los foros de BBDD.
En cuanto al diseño de la base, a menos que muestres el gráfico entero, no se entienden las relaciones, ni tampoco si tiene defectos a corregir.
La próxima vez postea un gráfico integral.