Ver Mensaje Individual
  #12 (permalink)  
Antiguo 11/02/2011, 09:32
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años
Puntos: 447
Respuesta: Problema de lógica

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 original
  1. DECLARE @CFG_RAZGOS_MORFOLOGICOS TABLE (id_grupo_morfologia INT, id_razgo_morfologico INT, desc_razgo_morfologico nvarchar(50));
  2. INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (1, 1, 'ASIATICO')
  3. INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (1, 2, 'TRIGUEÑO')
  4. INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (1, 3, 'BLANCO')
  5. INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (1, 4, 'NEGRO')
  6. INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (2, 1, 'OTRO')
  7. INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (2, 2, 'UNO MAS')
  8. INSERT INTO @CFG_RAZGOS_MORFOLOGICOS VALUES (3, 1, 'LO QUE SEA')
  9.  
  10. SELECT * FROM @CFG_RAZGOS_MORFOLOGICOS
  11.  
  12. SELECT *
  13. FROM @CFG_RAZGOS_MORFOLOGICOS T1
  14. EXCEPT
  15. (SELECT *
  16. FROM @CFG_RAZGOS_MORFOLOGICOS T2
  17. WHERE
  18. 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