![]() |
Datos repetidos... SQL...
Hola a todos...
Planteo la situación tal como es: Tengo una base de datos, destinada a movimientos de tarjetas de crédito. En la base de datos, entre otros campos hay: Nombre del cliente, Nombre de la tarjeta, Número de Tarjeta. Quiero que cuando se agregue un nuevo movimiento, no tener que escribir el nombre del cliente, y el número de la tarjeta de crédito, si es que el cliente ya compró algo (porque esos datos ya están en el sistema) El problema es que si éste cliente compró más de una vez, aparecerá en el TDBGrid, tantas compras como éste hizo. Supongamos que el cliente JUAN PEREZ hizo 3 compras con VISA número "xxx" y dos con MASTER CARD número "yyy". En mi Grid aparecerán 5 líneas, tres con JUAN PEREZ, VISA, xxx y dos con JUAN PEREZ, MASTER, yyy; yo quiero que aparezca solamente una vez la primera (visa) y otra vez la segunda (master) porque repetir esos datos no tendría sentido... Como planteo ese sql? se puede hacer esto de sacar los datos repetidos? Saludos y muchas gracias, Marcelo En crear una consulta query que me devuelva |
Que tal,
si tu DBMS soporta StoredProcedures (SP) podrías lanzar un SP en el OnNewRecord de tú DataSet de ventas el cual haga lo siguiente: Create #tmpTable(Vendedor as VArChar(50), TarjetaNombre as VarChar(50), TarjetaNUmeo as VArchar(50)) .... //Declaras un cursor para todos los clientes con compras DEclare cursor MiCursor for Select distinct clientes from tablaVentas into @Cliente ... //Barres este cursor y para cada uno de los clientes que tienes en @Cliente le haces inserts a la tabla temporal pero con los datos de la venta para el cliente en cuestion Saludos y espero que te sirva, |
Si los datos que listas no varian de uno a otro (los campos tienen valores similares) puedes hacer un SELECT DISTINCT de los campos, o agruparlos con GROUP BY
Claro, eso no te servira si en la consulta tienes un campo que varia, tal como la fecha del consumo. Dinos cual es tu caso |
Hector:
si, hayotros datos que varían, como la fecha, o el importe, etc... como tengo que hacer? porque usando distinct me da un error, me dice que no encuentra campos que ni menciono... y si cambio el disticnt por * vuelve a funcionar bien, pero me muestra los datos repetidos... como haría con el gruop by, sirve para eso? gracias mArCeLo |
Hola emeceuy
Pon el SQL que estas lanzando y miramos mejor como poder ayudarte De todas maneras, si quieres sacar la fecha, depende de como este definida esta, a lo mejor es dificil. Para el importe seguramente seria un sum(importe) en el select y un group by por los demas campos, pero lo dicho, mejor pon el SQL que lanzas |
bueno, aquí va el sql que lanzo:
select distinct (nombre_cli,tarj_num,tarj_nom) from "creditotarjetas.dbf") gracias Marcelo |
Prueba con
select distinct nombre_cli, tarj_num, tarj_nom from "creditotarjetas.dbf" Esto te dara 1 registro por nombre_cli existente en creditotarjetas.dbf |
La franja horaria es GMT +2. Ahora son las 07:10:02. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi