Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/10/2010, 12:50
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Obtener registros que no cumplen con la condicion del select

Buenas tardes dalves:

Hay varias observaciones que tengo que hacer a tu consulta:

Primero, no es recomendable que relaciones tus tablas así:

Código SQL:
Ver original
  1. FROM
  2. AF_SOCIOS_ACTIVOS T,    AF_SOCIOS_ACTIVOS R, ADM_VALES VALES
  3. ......
  4. WHERE
  5. R.FUNCIONARIO = T.FUNCIONARIO AND
  6. R.FUNCIONARIO= T.FUNCIONARIO AND
  7. VALES.SOCIO = R.SOCIO

Este tipo de uniones afecta considerablemente en el performanse de la consulta. En lugar de hacer esto utiliza la cláusula JOIN (puedes leer más acerca de este tema en
http://es.wikipedia.org/wiki/Join.

Ahora bien, el tipo de unión que estás utilizando sirve para listar elementos que se encuentran en las dos tablas que estás relacionando (sería el equivalente al INNER JOIN). Dado que tú necesitas mostrar elementos que no necesariamente se encuentran en tu tabla ADM_VALES es necesario que utilices un LEFT JOIN o un RIGHT JOIN, dale un vistazo a la liga que puse arriba para que veas cómo es que funcionan cada uno de ellos.

De tal manera que tu consulta debería quedar más o menos así:

Código SQL:
Ver original
  1. FROM AF_SOCIOS_ACTIVOS T
  2. INNER JOIN ON AF_SOCIOS_ACTIVOS R
  3. ON R.FUNCIONARIO = T.FUNCIONARIO
  4. LEFT JOIN ADM_VALES VALES
  5. ON  VALES.SOCIO = R.SOCIO AND VALES.ESTADO='V'
  6. WHERE
  7. T.CONVENIO = 195 AND R.CONVENIO = 197 OR
  8. T.CONVENIO = 195 AND R.CONVENIO = 195

Saludos y si continuas con problemas lo comentas en el foro para tratar de ayudarte
Leo.