Ver Mensaje Individual
  #16 (permalink)  
Antiguo 11/02/2011, 14:37
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

Cita:
Iniciado por franko1809 Ver Mensaje
Segun la logica esto que mencionas no podria suceder ya que la relacion es de 1 a muchos y por lo tanto el id_razgo_morfologico es primary key y efectivamente se puede repetir pero con el mismo contenido sino es asi entonces ESTA MAL LA LOGICA y es un mal diseño de la BD y esto se llama inconsistencia de datos
Franko: no sé por qué mencionas que los datos que coloco no podría suceder. Creo que te estás olvidando de las llaves primarias compuestas. El primer campo corresponde efectivamente al grupo morfológico, mientras que la unión de los campos 1 y 2 podría formar parte de la llave de rasgos. Eso por supuesto que no lo puedo asegurar, depende del compañero Adrián verificar si la lógica es correcta o no.

Adrián: el operador EXCEPT es soportado a partir de la versión 2005 y posteriores de SQL Server por lo que si utilizas alguna de estas ver. el ejemplo deberá funcionar sin problemas.

Si estás utilizando SQL Server 2000 entonces podrías retomar la lógica que te puse con el concat, sólo que aplicando la sintaxis correcta para SQL Server. Como tus campos son tipo numérico tendrías que poner algo como esto:

Código SQL:
Ver original
  1. SELECT rm.id_grupo_morfologia, rm.id_razgo_morfologico, gm.desc_grupo_morfologia, rm.desc_razgo_morfologico
  2. FROM CFG_GRUPOS_MORFOLOGIAS gm
  3. INNER JOIN CFG_RAZGOS_MORFOLOGICOS rm ON gm.id_grupo_morfologia=rm.id_grupo_morfologia
  4. WHERE 1 = 1
  5. AND UPPER(gm.desc_grupo_morfologia) LIKE UPPER('%pierna-izq%')
  6. AND CAST(rm.id_grupo_morfologia AS VARCHAR) + '-' + CAST(rm.id_razgo_morfologico AS VARCHAR) != '40-2'

Y como comenta acertadamente franko1809 creo que el tema ya se extendió demasiado y tal pareciera que aun no terminamos de entender la problemática. Igual y sería conveniente que si continuas con problemas abras otro tema y comenzar desde cero, tratando de plantear mejor las cosas

Saludos
Leo.