Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/06/2011, 10:04
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Restringir SELECT

La mas de las veces, reducir una consulta para que se entienda "mejor", ahce que se entiend directamente MAL y que lo que se quiere proponer resulte inaplicable.
Acostúmbrate a poner lo que realmente es, no simulaciones porque el SQL no es un lenguaje para hacer eso. Es un lenguaje de búsquedas precisas y lo parecido generalmente no resulta ser lo mismo.

Reflexiones aparte, el modelo que te proponía era sobre la base de dos campos, donde un IF() puede resolver la dicotomía. Pero tu caso no se asemeja ni por las tapas.
IN() es en esencia un OR, lo que implica que dará por buenos todos aquellos que al menos cumplan con uno de los parámetros. Y eso no es lo que tu quieres.
Hay varias formas de encararlo, una de ellas es con LEFT JOIN y un NOT IN:

Código MySQL:
Ver original
  1.     cliente.id_cliente
  2.     call_formulario F
  3.     INNER JOIN
  4.     call_cliente C ON F.id_cliente = C.id_cliente
  5.     LEFT JOIN
  6.         (SELECT DISTINCT id_cliente
  7.         FROM call_contactos
  8.         WHERE id_subtipo NOT IN ('6','7','8','9','0')) CC ON CC.id_cliente = F.id_cliente
  9.     DATE(F.entrevista_fecha) >=  '2009-01-01'
  10.    AND CC.id_cliente IS NULL;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)