Saber Registros Duplicados

792 views
Skip to first unread message

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 7:45:29 AM9/1/15
to Comunidad de Visual Foxpro en Español
Buenos Días

Una preguntita

tengo esta linea de codigo

SELECT weizhi, codigo, sum(total) as total, SUBSTR(weizhi,1,1) as lugar FROM consultaventas2 GROUP BY codigo ORDER BY weizhi desc INTO CURSOR prueba2

y necesito saber cuantas veces se repite un lugar. SUBSTR(weizhi,1,1) as lugar  "AQUI SE EL PASILLO DONDE SE ENCUENTRA LA MERCANCIA"

Esa consulta tiene que quedar así por que me muestra los datos que necesito, pero ademas necesito que en una columna alado me diga las veces que se repitio el lugar 

Si alguien tiene una solución porfavor 

Saludos

Luis Maria Guayan

unread,
Sep 1, 2015, 7:59:35 AM9/1/15
to publice...@googlegroups.com

-- Buscar registros repetidos --
http://comunidadvfp.blogspot.com/2014/09/buscar-registros-repetidos.html


Luis María Guayán
Tucumán, Argentina
_______________________________
Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 8:11:42 AM9/1/15
to publice...@googlegroups.com
Muchas gracias Sr. Luis

He conseguido esto pero todavía no lo tengo resuelto
Imágenes integradas 1

Necesito contar cuantas "Y" hay en otra columna alado en realidad empieza de A - Z

Partiendo de este codigo SELECT weizhi, codigo, sum(total) as total, SUBSTR(weizhi,1,1) as lugar FROM consultaventas2 GROUP BY codigo ORDER BY weizhi desc INTO CURSOR prueba2

Saludos

--

Rubén Lezcano

Carlos Miguel FARIAS

unread,
Sep 1, 2015, 8:18:35 AM9/1/15
to Grupo Fox
Prueba con
SELECT weizhi, codigo, sum(total) as total, SUBSTR(weizhi,1,1) as lugar, COUNT(DISTINCT weizhi) as veces;
   FROM consultaventas2 GROUP BY codigo ORDER BY weizhi desc INTO CURSOR prueba2

Prueba con DISTINCT y sin DISTINCT dentro del COUNT()
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 8:34:12 AM9/1/15
to publice...@googlegroups.com
Gracias Sr. Carlos por responder

así deje el código

SELECT weizhi, codigo, sum(total) as total, count(SUBSTR(weizhi,1,1))  as veces;
FROM consultaventas2 GROUP BY codigo ORDER BY weizhi desc INTO CURSOR prueba23

el weizhi es la ubicación de la mercancía empieza por una letra que va de A - Z

Yo quiero saber cuantas veces se repite la A, la B, C.....


por eso puse así
count(SUBSTR(weizhi,1,1))  as veces

pero me sale 1 en todos los registros, por que puede ser?

Saludos cordiales
--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 8:37:42 AM9/1/15
to publice...@googlegroups.com
este es el resultado

 Imágenes integradas 1

en Veces quiero que salga 

Y = 325
X = 402
W = 100
A= 3

Saludos
--

Rubén Lezcano

Qsoft

unread,
Sep 1, 2015, 9:00:00 AM9/1/15
to publice...@googlegroups.com
disculpa, porque no usas LEFT(weizhi,1) en vez del SUBSTR()?

luego, tu consulta te vendria bien si omites las columnas y dejas solo la columna del lugar, mas o menos asi

SELECT LEFT(weizhi,1) as lugar, count(LEFT(weizhi,1))  as veces;
FROM consultaventas2 GROUP BY 1 ORDER BY 1 desc INTO CURSOR prueba23


Enrique Vasquez B.

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 9:26:03 AM9/1/15
to publice...@googlegroups.com
Hola enrique no cuenta muestra todo 1

Saludos

--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 9:39:41 AM9/1/15
to publice...@googlegroups.com
Carlos hay otra forma para contar los que son iguales 

saludos

El 1 de septiembre de 2015, 14:18, Carlos Miguel FARIAS <carlosmig...@gmail.com> escribió:



--

Rubén Lezcano

German Montini

unread,
Sep 1, 2015, 10:04:59 AM9/1/15
to publice...@googlegroups.com
Prueba esto
 
SELECT weizhi, LEFT(weizhi,1)  as Letra;
FROM consultaventas2 INTO CURSOR prueba23
 
Archivo = DBF()
SELECT Letra, count(Letra)  as veces;
FROM (Archivo) prueba23;
GROUP BY Letra ORDER BY Letra desc INTO CURSOR prueba24
 
Saludos
Germán Montini

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 10:35:07 AM9/1/15
to publice...@googlegroups.com
German es Con MYSQL de Base de Datos

Saludos
--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 10:36:39 AM9/1/15
to publice...@googlegroups.com
Solucionado, no se si es lo mas adecuado pero funciona, muchas gracias a todos

SET ENGINEBEHAVIOR 70
SELECT weizhi, codigo, sum(total) as total, SUBSTR(weizhi,1,1) as lugar FROM consultaventas2 GROUP BY codigo ORDER BY weizhi desc INTO CURSOR prueba2


SELECT codigo, total, lugar, count(lugar) from prueba2 GROUP BY lugar having count(lugar)>1  INTO CURSOR jkl
SELECT jkl

Saludos
--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 11:02:19 AM9/1/15
to publice...@googlegroups.com
Sigo con Problemitas

SET ENGINEBEHAVIOR 70
SELECT weizhi, codigo, sum(total) as total, SUBSTR(weizhi,1,1) as lugar FROM consultaventas2 GROUP BY codigo ORDER BY weizhi desc INTO CURSOR prueba2




SELECT codigo, total, lugar, count(lugar) from prueba2 GROUP BY lugar having count(lugar)>1  INTO CURSOR jkl



Me ha agrupado

Imágenes integradas 1
Pero yo necesiot ver el listado de los demas codigos a´si solo me muestra 1

Como lo podría hacer?


--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 11:05:53 AM9/1/15
to publice...@googlegroups.com
Y si escribo asi

SELECT weizhi, codigo, sum(total) as total, SUBSTR(weizhi,1,1) as lugar FROM consultaventas2 GROUP BY codigo  having count(weizhi)>1 INTO CURSOR prueba2

tampoco va :(
--

Rubén Lezcano

German Montini

unread,
Sep 1, 2015, 11:42:55 AM9/1/15
to publice...@googlegroups.com
Haber si te entiendo, en un mismo listado, queres mostrar los totales de cada ubicación, pero a su vez, tambien queres mostrar las cantidades de los que tienen las mismas letras, el problema es que las cantidades de letras se te pueden repetir, y tendras una misma cantidad en dos columnas, supongamos que tenes una ubicacion YZ1 con 500 de total , y otra YZ2 con 600 de Total, quedaria asi
 
weizhi   total        count
YZ1         500         2
YZ2         500         2
 
Es eso lo que queres lograr?
 
Si es así, tendras que obtener los datos por dos consultas separadas, una para que te traiga los totales y la primera letra, y por otro lado las cantidades y primera letra y de alli una tercera consulta que unifique los datos de ambas consultas
 
Germá Montini
image.png

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 11:46:44 AM9/1/15
to publice...@googlegroups.com
Siii German es eso lo que quiero pero no me sale

Saludos
--

Rubén Lezcano

Carlos Miguel FARIAS

unread,
Sep 1, 2015, 11:59:12 AM9/1/15
to Grupo Fox
No pusiste lo que te mande, como te fue con eso, es VFP 9?
Para darte una ayuda mas concreta, favor de mandar campos de la tabla, y un pequeño esquema de los datos que quieres mostrar y por supuesto la versión de VFP que usas (en el caso de tablas nativas), porque VFP 9 permite muchas cosas que las versiones anteriores no.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza les acompañe

Rubén Dario Lezcano Salinas

unread,
Sep 1, 2015, 12:31:25 PM9/1/15
to publice...@googlegroups.com
Carlitos lo que necesito es contar los campos que se repiten en una tabla  pero sin agrupar, no se si es posible eso
--

Rubén Lezcano

German Montini

unread,
Sep 1, 2015, 12:41:14 PM9/1/15
to publice...@googlegroups.com
&& Primero que nada, trae todos los registros de mysql a visual foxpro
 
SELECT weizhi, codigo, total, LEFT(weizhi,1) as lugar FROM consultaventas2 INTO CURSOR prueba2
 
&& de alli obtene el nombre del archivo del cursor
 
Archivo = DBF()
 
SELECT weizhi, codigo, SUM(total) AS Total, lugar FROM (Archivo) Prueba2 INTO CURSOR prueba3
 
Archivo3 = DBF()
 
SELECT Lugar, COUNT(*) FROM  (Archivo) Prueba2 INTO CURSOR prueba4
 
Archivo4 = DBF()
 
SELECT Prueba3.*, Prueba4.Count FROM (Archivo3) Prueba 3 INNER JOIN Prueba4 ON Prueba3.Lugar = Prueba4.Lugar INTO CURSOR Prueba5
 
Si no me equivoco ahi te tiene que funcionar
image.png

Rubén Dario Lezcano Salinas

unread,
Sep 2, 2015, 5:03:46 AM9/2/15
to publice...@googlegroups.com
No mi amigo no salen los resultaos los agrupa mal no se por que

--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Sep 2, 2015, 6:17:37 AM9/2/15
to publice...@googlegroups.com
Buenos Días 

Chicos necesito de vuestra ayuda, no me sale que muestre el total
Imágenes integradas 1
Lo que necesito es otra columna alado donde me muestra el total de "Y" pero son agrupar 
Ejemplo

Weizhi, codigo, total, Total Weizhi
Y         aaaaa   66     3050
Y         bbbbb   55     3050
X         ccccc   48     1020
X         ddddd   56     1020


Pero no soy capaz con el Select

SELECT  LEFT(weizhi,1) as weizhi, codigo, sum(total) as total FROM consultaventas2 GROUP BY codigo ORDER BY weizhi desc INTO CURSOR prueba27


Saludos
--

Rubén Lezcano

Fernando D. Bozzo

unread,
Sep 2, 2015, 7:37:20 AM9/2/15
to Comunidad de Visual Foxpro en Español
Hola Rubén:

El problema es que lo estás enfocando mal, porque pretendés tener en un registro de una columna un total que corresponde a un montón de registros que a su vez se están mostrando.

Mejor dividí tu problema en 2, por un lado ya tenés agrupado lo que querías con sus totales por código, simplemente tenés que hacer otro SQL donde totalices Weizhi solamente, por ejemplo con:

SELECT LEFT(weizhi,1) as weizhi, sum(total) as total2 ;
    FROM consultaventas2 ;
    GROUP BY 1 ;
    INTO CURSOR prueba28

Luego relacionás ambos cursores por el campo weizhi, por ejemplo creando un indice, o también podés hacer primero esta consulta y luego vincularla a la tuya para que de esta consulta te muestre el total2


Saludos.-

Carlos Miguel FARIAS

unread,
Sep 2, 2015, 7:56:26 AM9/2/15
to Grupo Fox
Si quieres detalle y totales de dicho detalle en la misma grilla, usando vfp debes usar Union (no de Santa Fe).

SELECT campoPrincipal, "D" as 'TIPO', LEFT(campoPrincipal, 1) AS 'Lugar', campoSumable, 0 as 'Cuantos';
   FROM tuTabla INTO CURSOR tuCursor;
   WHERE <tuFiltro>;
UNION;
SELECT campoPrincipal, "T" as 'TIPO', LEFT(campoPrincipal, 1), SUM(campoSumable), COUNT(*);
   FROM tuTabla INTO CURSOR tuCursor;
   WHERE <tuFiltro>;
   GROUP BY 1, 3, 2;
ORDER BY 1, 3, 2  && El order corre para todo el SELECT y sus uniones


De esa manera, obtienes el detalle del grupo y en renglon siguiente, el total del grupo (sumas y conteo), tiene una columna que te diferencia el detalle del total (TIPO) y con eso puedes controlar colores y fonts en la grilla (para que se vean distintos).
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza te acompañe, y si no, a contar a mano ;-D

Rubén Dario Lezcano Salinas

unread,
Sep 2, 2015, 9:33:07 AM9/2/15
to publice...@googlegroups.com
Carlitos como puedo hacer la Union y cargar en un cursor

SELECT  LEFT(weizhi,1) as weizhi, codigo as Codigo, LEFT(namecn,50) as Nombre, sum(paquete) as paquete, sum(total) as total FROM consultaventas2 GROUP BY codigo ORDER BY codigo INTO CURSOR consultamosmov2 
union
SELECT  weizhi, count(weizhi) FROM consultamosmov2 GROUP BY weizhi having count(weizhi)>1 INTO CURSOR prueba28

Asi da error en fox 8
--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Sep 2, 2015, 10:32:25 AM9/2/15
to publice...@googlegroups.com
en estos dos tengo lo que necesito ver

Ahora como puedo hacer la union

SELECT  LEFT(weizhi,1) as weizhi, codigo as Codigo, LEFT(namecn,50) as Nombre, paquete, sum(total) as total FROM consultaventas2 GROUP BY codigo ORDER BY weizhi INTO CURSOR consultamosmov2 
SELECT  weizhi, count(weizhi) as contador FROM consultamosmov2 GROUP BY weizhi having count(weizhi)>1 INTO CURSOR prueba28

saludos
--

Rubén Lezcano

Rubén Dario Lezcano Salinas

unread,
Sep 2, 2015, 10:45:47 AM9/2/15
to publice...@googlegroups.com
Como se puede ver en la imagen
Imágenes integradas 1

Asi es como lo necesito pero no me carga todo los totales en la Y por ejemplo

SELECT  LEFT(weizhi,1) as weizhi, codigo, LEFT(namecn,50) as Nombre, paquete, sum(total) as total FROM consultaventas2 GROUP BY codigo ORDER BY weizhi INTO CURSOR consultamosmov2 

SELECT  weizhi, count(weizhi) as contador, codigo FROM consultamosmov2 GROUP BY weizhi having count(weizhi)>1 order by weizhi INTO CURSOR prueba28 ;
SELECT consultamosmov2.weizhi, consultamosmov2.codigo, consultamosmov2.nombre, consultamosmov2.total ,prueba28.contador ;
FROM consultamosmov2 ;
left JOIN prueba28 ON consultamosmov2.codigo=prueba28.codigo ; 
ORDER BY prueba28.weizhi ;
into CURSOR jkl

--

Rubén Lezcano

Víctor Hugo Espínola Domínguez

unread,
Sep 2, 2015, 12:35:27 PM9/2/15
to publice...@googlegroups.com
Hola Rubén

Cuando unes (UNION) varias consultas solo puedes usar INTO en la última.

Saludos,
Víctor.
Lambaré - Paraguay.

Rubén Dario Lezcano Salinas

unread,
Sep 3, 2015, 5:01:41 AM9/3/15
to publice...@googlegroups.com
Hola Victor has visto el problemita que tengo, no soy capaz de hacer eso

:(

Ni con la ayuda de los expertos 
--

Rubén Lezcano

Víctor Hugo Espínola Domínguez

unread,
Sep 3, 2015, 1:38:03 PM9/3/15
to publice...@googlegroups.com
Hola Rubén

Es difícil ayudarte porque hablas en chino ;-)

Envía una pequeña muestra de tus datos y lo que quieres obtener, puedes usar Excel para el efecto.

Saludos,
Víctor.
Lambaré - Paraguay.

Carlos Miguel FARIAS

unread,
Sep 3, 2015, 2:29:00 PM9/3/15
to Grupo Fox
Ruben:
SQL Básico.
Todos los selects que se enganchan por UNION, son una sola instrucción SQL
Toda instrucción SQL, puede como máximo generar un solo CURSOR (ver ejemplos en la ayuda).
Como vas a unir los resultados, los campos generados por cada SELECT deben ser del mismo tipo en la misma posición.
(O sea, si en un SELECT, la primer columna es numérica, en todos los demás selects, debe ser numérica)
En el caso de campos numéricos, tratar de generar datos del mismo tipo numérico, porque si el primero es entero, puede truncar campos flotantes o monetarios.
En el caso de campos de texto (string o char) el ancho del dato que genere el primer select, es el que se usa en el resto de la consulta, por lo tanto, si el primer select genera un string más corta que en los otros selects, deberás "estirarla" con blancos (PADR).
Si una columna tiene campo fecha, en todos los selects del mismo tipo (ojo date<>datetime y viceversa)
Puedes agregar una columna que genere un valor fijo (constante) para cada select, de manera tal que o te sirve para ordenar o para conocer donde se originó (y controlar font, color en la grilla).
Después, el resto, es cuestión de prestar atención y enconlumnar apropiadamente.
Otra cosa, el ORDER BY es único para todos los selects y va al final.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que las Fuerza los mantenga UNIDOS
Reply all
Reply to author
Forward
0 new messages