Tiene razón Genetix. Al hacer un producto de las tres tablas y dejar solo los registros del usuario 'xxxx' obtenemos que en las líneas para las que no hay registro en la tabla tipofertausuario, los campos de ésta quedan nulos, por lo que con filtrar por los campos nulos de esta tabla obtienes los tipoferta en los que el usuario no está apuntado. Por fin, obtenemos solo la columna del código de oferta.
Código:
SELECT tipoferta.codoferta
FROM tipoferta, usuario, tipofertausuario
WHERE usuario.codusuario='xxxx'
AND tipofertausuario.codTipOferta = tipoferta.codTipOferta
AND tipofertausuario.codusuario IS null
La sentencia con NOT IN sería
Código:
SELECT *
FROM tipoferta
WHERE codtioferta NOT IN
(SELECT codtipoferta
FROM tiopertausuario
WHERE codusuario='xxxxx');