Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

QUERY para hallar USUARIOS que NO han comprado ¿?

Estas en el tema de QUERY para hallar USUARIOS que NO han comprado ¿? en el foro de Mysql en Foros del Web. Hola. Sucede que la TABLA USUARIOS no dispone de un campo para saber si X usuario ha comprado. La TABLA VENTAS sí que tiene los ...
  #1 (permalink)  
Antiguo 26/06/2010, 15:13
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 4 meses
Puntos: 22
QUERY para hallar USUARIOS que NO han comprado ¿?

Hola.

Sucede que la TABLA USUARIOS no dispone de un campo para saber si X usuario ha comprado.
La TABLA VENTAS sí que tiene los nombres de los usuarios.

Como hago un INNER JOIN pero del tipo

SELECT usuario FROM usuarios LEFT JOIN ventas
ON usuarios.usuario!=ventas.cliente

????

Este QUERY no me devuelve el resultado anhelado.

Gratisimas.
  #2 (permalink)  
Antiguo 26/06/2010, 15:55
Avatar de 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, 6 meses
Puntos: 2658
Respuesta: QUERY para hallar USUARIOS que NO han comprado ¿?

Código MySQL:
Ver original
  1. SELECT U.usuario
  2. FROM usuarios U LEFT JOIN ventas V ON U.usuario = U.cliente
  3. WHERE V.cliente IS NULL;
Si cada usuario es un cliente y no hay clientes por fuera de los usuarios, tu consulta no tendría resultados por "!=".
En cambio, si quieres cuáles son los que no compraron, el cruce de ambas tablas daría NULL usando "=", y el NULL sí es determinable.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/06/2010, 16:38
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 4 meses
Puntos: 22
Respuesta: QUERY para hallar USUARIOS que NO han comprado ¿?

Gratitud.

Creo que el "truco" es:

WHERE V.cliente IS NULL;

TRUE?
  #4 (permalink)  
Antiguo 26/06/2010, 16:52
Avatar de 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, 6 meses
Puntos: 2658
Respuesta: QUERY para hallar USUARIOS que NO han comprado ¿?

Exacto.

NULL no es un valor, sino un puntero a la nada, por lo que no se pueden usar operadores lógicos con él. Sólo se puede usar funciones específicas como ISNULL() o condiciones como la IS NULL o bien IS NOT NULL.
Pero por otro lado es un estado de datos muy importante, porque, por ejemplo, funciones agregadas como SUM(), COUNT(), etc., ignoran los valores que sean NULL, con lo que resultan eficientes a la hora de usarlas (sólo operan con valores reales, por lo que no hay que hacer comprobaciones en una suma).
Otra situación a considerar es que una consulta devuelve valores si y sólo si la primera tabla del FROM es NOT NULL, lo que hace que el orden de las tablas sea importante.

Y todo eso es consecuencia de la existencia (valga la contradicción) del NULL.

Prestale atención al NULL. Es más importante de lo que muchos piensan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: query, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.