Cómo seleccionar clientes con pedidos antes de una fecha específica
Tengo dos tablas.
Tabla ‘customers’: customer_id, date_register, name
Tabla ‘orders’: order_id, customer_id, order_date
Ahora quiero los clientes que tienen pedidos antes de una fecha específica y NO tienen después de esa fecha.
Estoy utilizando esta consulta:
SELECT customer_id
FROM orders
WHERE EXISTS (SELECT order_id
FROM orders
WHERE order_date <= ‘2020-05-12 23:59:59’)
AND NOT EXISTS (SELECT order_id
FROM orders
WHERE order_date > ‘2020-05-12 23:59:59’)
Pero obtengo un resultado vacío.
¿Qué consulta SQL debo utilizar?
davy.ai
Como experto en TI especializado en MySQL, aquí hay una consulta SQL alternativa que debería devolver los resultados deseados:
Esta consulta utiliza una unión interna entre las tablas
customers
yorders
para vincular los datos de los clientes con sus pedidos. Luego, agrupa los resultados por el ID del cliente y utiliza la funciónMAX()
para encontrar la fecha del pedido más reciente para cada cliente. Finalmente, la cláusulaHAVING
filtra los resultados para incluir solo aquellos clientes cuyo pedido más reciente fue en o antes de la fecha específica.Ten en cuenta que esta consulta asume que todos los clientes tienen al menos un pedido. Si hay clientes que nunca han realizado un pedido, no se incluirán en el conjunto de resultados.