Lo que entiendo es que la consulta te interesa para un producto determinado ¿no? En ese caso, sólo hay que aparear
t_variacion con las variaciones ya existentes para el producto en
t_materia_prima_variacion usando un left join.
Código:
SELECT vari_desc
FROM t_variacion AS v
LEFT JOIN t_materia_prima_variacion AS mpv
ON mpv.mtpv_vari_id = v.vari_id
AND mpv.mtpv_mtpi_id = 1
WHERE mpv.mtpv_vari_id IS NULL
En el caso de que quieras obtener para todos los productos, o para un grupo determinado de ellos, tu mejor opcion es un cross join para obtener todas las combinaciones posibles, y luego un left join para excluir las ya existentes.
Código:
SELECT cmb.mtpi_desc, cmb.vari_desc
FROM (
SELECT mp.mtpi_id,
mp.mtpi_desc,
v.vari_id,
v.vari_desc
FROM t_materia_prima AS mp
CROSS JOIN t_variacion AS v
) AS cmb --Todas las posibles combinaciones
LEFT JOIN t_materia_prima_variacion AS mpv
ON mpv.mtpv_mtpi_id = cmb.mtpi_id
AND mpv.mtpv_vari_id = cmb.vari_id
WHERE mpv.mtpv_mtpi_id IS NULL