SQL - Consulta que parece facil pero a mi no me sale

 
Vista:

Consulta que parece facil pero a mi no me sale

Publicado por Hector (2 intervenciones) el 17/10/2011 19:18:02
Tengo una base de datos en uso con las siguientes tablas involucradas en la consulta
articulos y clientes que estan relacionadas con idcliente en articulos.
necesito saber los clientes que no compran desde una determinada fecha (ejemplo: anteriores a 1/3/10) la fecha la saco de la tabla articulos-modificado. Si hago la consulta <='01/03/10' me sale los que compraron en esa epoca y los que compran actualemente, y necesito unicamente los que compraron antes del 01/03/10, espero que se entienda.

Muchas gracias

Hector..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta que parece facil pero a mi no me sale

Publicado por GilRo (1 intervención) el 17/10/2011 19:46:06
Utiliza la misma tabla "articulos modficados" 2 veces con alias y join entre ambas, la primer tabla con fecha <= "01/03/10" y la segunda tabla con not exists fecha > "01/03/10"

Espero te sirva

Saludos
GilRo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta que parece facil pero a mi no me sale

Publicado por hector (2 intervenciones) el 18/10/2011 23:49:22
hice algo parecido pero no use alias si no que hice 2 consultas con esos 2 criterios y join, pero no resulto voy a probar con alias.

Gracias

GilRo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta que parece facil pero a mi no me sale

Publicado por Carlos Cuyé (11 intervenciones) el 27/10/2011 00:11:56
SELECT....
FROM Clientes, Articulos, Ventas
WHERE Clientes.Id_Cli=Ventas.Id_Cli AND
Articulos.Id_Art=Ventas.Id_Art AND
Clientes.Id_Cli NOT IN (SELECT DISTINCT Id_Cli FROM Ventas WHERE Fecha=>"01/03/10")

Tablas 'Ventas' -> Lleva el registro de las ventas, relacionando los artículos con los clientes que los compran, mediante los campos Id_Cli e Id_Art. Esa relación está definida en las 2 primeras condiciones:
Clientes.Id_Cli=Ventas.Id_Cli
Articulos.Id_Art=Ventas.Id_Art

La condición
Clientes.Id_Cli NOT IN (SELECT DISTINCT Id_Cli FROM Ventas WHERE Fecha=>"01/03/10")
produce una 'subconsulta'
(SELECT DISTINCT Id_Cli FROM Ventas WHERE Fecha=>"01/03/10")
que retorna todos los Id de los clientes que hicieron compras desde el 01-03-10 (inclusive, debido al operador >=). Sólo son necesarios los Id_Cli en esta subconsulta.
la cláusula DISTINCT indica que retorne sólo un registro por cada Cliente, así se evita sobrecarga por lecturas excesivas innecesarias.

Los operadores:
IN (...) hace que retorne los valores que Sí están en la subconsulta.
NOT IN (...) hace que retorne los valores que No están en la subconsulta.

Entonces
Clientes.Id_Cli NOT IN (...) retornará los Valores de Id_Cli que No están en la subconsulta, es decir, los clientes que No realizaron compras desde el 01-03-10 inclusive.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar