Como establecer entre dos tablas Coincidentes y No
Me gustaría conocer el código en Visual FoxPro para establecer entre dos tablas registros coincidentes y no coincidentes y marcar los registros repetidos en una tabla.
bueno para saber los registros coincidentes entre dos tablas prueba esto tabla1 y tabla2 select * form tabla1, tabla2 where tabla1.referencia = tabla2.referencia into cursor tbcoincidentes lo anterior es si deseas obtener los campos de la tabla1 y 2.. si quieres algunos campos especificos, nombras la tbla y el campo de la tabla que quieres... referencia es el punto de comparacion... para los no coincidente solo pregunstas si son diferente, ose... tabla1.referencia != tabla2.referencia y listo Para marcar los registros repetidos en una tabla... imagino te refieres a marcar para eliminar.. primero listas los registros sin que se repitan... select distinct * from tabla1 into cursor datosdistintos ahora a marcar cada registro que se repita num_regis = 1 select datosdistintos go top limite = reccount() scand for num_regis <= limite cant = 0 select tabla1 go top n_regis1 = 0 scand n_resgis2 < = reccount() if datosdistintos.referencia = tabla1.referencia then cant = cant + 1 if cant > 1 then aplicas la linea de elimnar... endif endif Endscan Ensdcan ... Que pena no terminarte el ejemplo... pero me surgió una urgencia,,, debo ireme...
Muy bien esto es lo que buscaba... me puedes enviar el resto del código del ejemplo... gracias.
retomando la parte de la eliminacion... que pena no responder antes.. estaba bastante ocupado select distinct * from tabla1 into cursor datosdistintos ahora marcar cada registro que se repita num_regis = 1 select datosdistintos go top limite = reccount() scand for num_regis <= limite cant = 0 select tabla1 go top n_regis1 = 0 scand n_resgis2 < = reccount() if datosdistintos.referencia = tabla1.referencia then cant = cant + 1 if cant > 1 then replace tabla1.referencia with -1 && Cambia la referencia por (-1) parea saber cuales eliminar endif endif endscan ensdcan .....una ves definidos los registros a eliminar... se aplica delet from mitabla1 where mitabla1.referencia = -1 select mitabla1 pack ... Listo... para aplicar el pack debes abrir la tabla en modo exclusivo...