Compañero adriannjimenez:
Creo que no leíste el comentario que te hice en mi post:
Cita: si su manejador soporta la función EXCEPT o algo por el estilo, puedes utilizarla,
Según lo que entendí el id_razgo_morfología podría repetirse para cada grupo, es decir, puedes tener algo como esto en tu tabla CFG_RAZGOS_MORFOLOGICOS:
Código:
1 1 ASIATICO
1 2 TRIGUEÑO
1 3 BLANCO
1 4 NEGRO
2 1 OTRO
2 2 UNO MAS
3 1 LO QUE SEA
Por lo tanto las soluciones que proponen los compañeros Libras y franko1809 no aplican, ya que ellos están considerando que el id_razgo_morfología es único para cada registro.
Ahora bien, supongamos que de esta tabla tú quieres filtras sólo el registro 2-1 "OTRO" puedes hacerlo así:
Código SQL:
Ver originalDECLARE @CFG_RAZGOS_MORFOLOGICOS TABLE (id_grupo_morfologia INT, id_razgo_morfologico INT, desc_razgo_morfologico nvarchar(50));
INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (1, 1, 'ASIATICO')
INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (1, 2, 'TRIGUEÑO')
INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (1, 3, 'BLANCO')
INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (1, 4, 'NEGRO')
INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (2, 1, 'OTRO')
INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (2, 2, 'UNO MAS')
INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (3, 1, 'LO QUE SEA')
SELECT * FROM @CFG_RAZGOS_MORFOLOGICOS
SELECT *
FROM @CFG_RAZGOS_MORFOLOGICOS T1
EXCEPT
(SELECT *
FROM @CFG_RAZGOS_MORFOLOGICOS T2
WHERE
id_grupo_morfologia = 2 AND id_razgo_morfologico = 1)
Si checas el ejemplo, la primer consulta te regresa los 7 registros, la segunda, utilizando el operador EXCEPT te filtra el registro 2-1, mostrando los restantes 6.
Puedes meter esto como una subconsulta para poder hacer el INNER JOIN con tu otra tabla. Haz la prueba y nos comentas
Saludos
Leo