Cita:
Iniciado por LucasArt Hola, quiero ser lo mas claro posible, tengo una tabla clientes y una tabla ventas con la siguiente estructura
clientes [ idcliente, nombre]
ventas [ idventa, idcliente, detalle]
lo que intento hacer basicamente es obtener la ultima venta de cada cliente y mostrar los datos del cliente, doy un ejemplo de las tablas y al final el resultado que deseo obtener al cual me es imposible llegar
clientes
idcliente nombre
1 Martin
2 Lucas
3 Rodrigo
ventas
idventa idcliente detalle
1 1 1 pepino
2 1 2 manzanas
3 3 5 mandarinas
4 2 3 peras
5 2 6 naranjas
6 1 8 kiwis
7 3 2 bananas
lo que quiero que me devuelva es el ultimo movimiento de cada cliente
idventa idcliente nombre detalle
5 2 Lucas 6 naranjas
6 1 Martin 8 kiwis
7 3 Rodrigo 2 bananas
el problema es que cuando hago un inner join de ambas tablas me devuelve todos los movimientos. yo quiero solo el ultimo de cada uno, y si hay clientes que no tienen movimientos que no me los muestre
desde ya muchas gracias!!!!
HoLa Lucas
primero saque un subconsulta de ventas ordenandolo por idventa en forma descendente pero solo obtengo un resultado ya que utilizo el TOP 1 con alias SV en donde lo relaciono con C.idcliente ya q con esto por cada cliente sale su ultima venta IDVENTA y despues busco el IDVENTA en mi inner join de 2 tablas clientes y ventas y asi me devuelve unicamente la ultima venta por cada cliente.
Código SQL:
Ver originalSELECT V.idventa ,C.idcliente ,C.nombre ,V.detalle
FROM clientes C INNER JOIN ventas V ON C.idcliente=V.idcliente
WHERE
V.idventa IN (SELECT top 1 SV.idventa FROM ventas SV
WHERE SV.idcliente=C.idcliente ORDER BY SV.idventa DESC)
ORDER BY V.idventa
Observar bien cuales son las tablas(2 clientes, ventas) y cuantos alias hay en toda la consulta(3 C, V, SV) SV- le puse por ser subVenta.
www.bitxense.com.pe | Soluciones Informaticas S.A.C. -
[email protected]
Cualquier duda soy Jhon Bautista Palomino aqui esta mi correo
[email protected] Lima-Peru