Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/02/2008, 14:44
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 23 años
Puntos: 7
Re: Consulta en dos tablas

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