Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Obtener datos repetidos (https://www.clubdelphi.com/foros/showthread.php?t=95453)

elrayo76 09-11-2021 18:36:26

Obtener datos repetidos
 
Buenas gente, tengo la siguiente consulta que necesito hacer y no se cual sea la forma mas eficiente de resolverla


Tengo la siguiente tabla


Ramo | Producto | Poliza | Tipo
1730 | 1 | 1 | 1

1730 | 1 | 1 | 1

1730 | 1 | 1 | 2

1730 | 1 | 5 | 1


Necesito de esos datos agruparlos por Ramo/Producto/Poliza y saber si el campo Tipo se repite dentro de la misma Poliza. Para esto hice la siguiente consulta similar a la siguiente en SQL Server, pero no se si es del todo performance


Código SQL [-]
SELECT COUNT(Tipo)
   FROM (SELECT Tipo
               FROM Tabla
             WHERE Ramo = 1730 AND
                        Producto = 1 AND
                        Poliza = 1
              GROUP BY Ramo, Producto, Poliza, Tipo) mpdl), 0)


La sub-consulta me da cuentos Tipo distintos existen agrupados y la consulta me devuelve cuantos grupos existen, con lo cual si hay mas de 1 es porque hay mas de un Tipo.



Saludos,
El Rayo

elrayo76 09-11-2021 20:25:16

Para mas detalles les puedo agregar que lo que necesito es saber cuando todos los registros para un mismo Ramo/Producto/Poliza tienen todos el mismo Tipo 1 para poder actualizar otra tabla. De tener todos otro tipo o no todos con el mismo no debería hacer nada.


Saludos
El Rayo

mamcx 09-11-2021 21:21:37

Cita:

Empezado por elrayo76 (Mensaje 543929)
Para esto hice la siguiente consulta similar a la siguiente en SQL Server, pero no se si es del todo performance


"Similar"? Osea que motor/version usas? Y mejor da las cosas exactas.

P.D: El query planer te dira si es o no de buen desempeño...

bucanero 10-11-2021 09:13:59

hola

con esta consulta puedes obtener los registros que tienen varios "tipos" (duplicados)
Código SQL [-]
SELECT Ramo, Producto, Poliza
FROM tabla 
group by Ramo, Producto, Poliza
having count(Tipo)>1

y si en vez de having count(Tipo)>1 utilizas having count(Tipo)=1 solo obtendrás los registros con "tipo" no repetido.

Para mejorar el rendimiento de la consulta es recomendable tener una clave UNICA para los campos invinculados.

Como bien dice mamcx depende también del motor de BBDD. Esta consulta al menos es valida para los motores MySQL Y MSSQL, para otros motores de BBDD no los he probado.


La franja horaria es GMT +2. Ahora son las 21:43:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi