** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Consulta sin duplicados
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConsulta sin duplicados

 Responder Responder
Autor
Mensaje
Erick Gamer Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 08/Mayo/2016
Localización: Mexico
Estado: Sin conexión
Puntos: 387
Enlace directo a este mensaje Tema: Consulta sin duplicados
    Enviado: 03/Agosto/2023 a las 01:05
Hola a todos, esperando.

Tengo una consulta de union como la siguiente:

SELECT *
FROM (select * from Data_Side1
UNION
select * from Data_Side2
UNION
select * from Data_Side3)
WHERE ((([%$##@_Alias].[PN]) Not Like "C*"));

Donde mis datos que obtengo son como los siguientes:


Lo que busco es no obtener datos duplicados en la columna PN.

Puedo diseñar una tabla para que no me admite duplicados en esa columna, pero tengo la inquietud si se puede realizar desde la propia consulta.

NOTA: Hay mas columnas en mi consulta, estos son solo un ejemplo.


Saludos

Erick Gamer.


Aprendiz de todos, maestro de nadie.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Enlace directo a este mensaje Enviado: 03/Agosto/2023 a las 11:47
Hola,

Por las horas que lleva el mensaje y visto que nadie ha respondido, supongo que todos estamos igual: no nos queda claro que es lo que pretendes conseguir. 

Intenta volver a explicarlo.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
Erick Gamer Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 08/Mayo/2016
Localización: Mexico
Estado: Sin conexión
Puntos: 387
Enlace directo a este mensaje Enviado: 03/Agosto/2023 a las 16:48
Una disculpa Xavi, claramente vi que se habia subido la imagen en la pregunta publicada con un ejemplo de lo que busco. 
Este es el resultado de mi consulta union.

Actual
PN Identificador Size MinCH NomCC MaxCC
REF25706 A 4 2.25 2.3 2.35
RAM46789 B 0.5 1.05 1.1 1.15
RAM46789 C 0.4 1.02 1.05 1.08
ERF46790 A 1 1.35 1.4 1.45
ERF46791 A 1.5 1.4 1.45 1.5
LDS29373 A 0.4 .82 0.85 .88
LDS29373 A 0.5 .9 0.95 1
REF91811 X 0.5 1.1 1.15 1.2
REF91812 A 0.8 1.25 1.3 1.35
CLS88505 B 0.4 .92 0.95 .98
CLS88505 B 0.5 .9 0.95 1

El resultado que busco es de la columna PN no obtener datos repetidos.

Resultado
PN Identificador PN Sec Size MinCH NomCC MaxCC
REF25706 A 4 2.25 2.3 2.35
RAM46789 B 0.5 1.05 1.1 1.15
ERF46790 A 1 1.35 1.4 1.45
ERF46791 A 1.5 1.4 1.45 1.5
LDS29373 A 0.5 .9 0.95 1
REF91811 X 0.5 1.1 1.15 1.2
REF91812 A 0.75 1.25 1.3 1.35
CLS88505 B   0.5 .9 0.95 1

Para esto puedo crear una tabla como ID la columna PN y que no acepte duplicados, pero quisiera saber si es posible hacerlo con una consulta.

Esta es la consulta que tengo actualmente:

[code]
SELECT *
FROM (select * from Data_Side1
UNION
select * from Data_Side2
UNION
select * from Data_Side3)
WHERE ((([%$##@_Alias].[PN]) Not Like "C*"))
[endcode]

Espero ahora este mas claro lo que busco.

Un saludo.

Erick Gamer.



Aprendiz de todos, maestro de nadie.
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5704
Enlace directo a este mensaje Enviado: 03/Agosto/2023 a las 17:28
Y no importa que MinCH, NomCC y MaxCC sean diferentes en los duplicados.

Saludos.
Arriba
Erick Gamer Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 08/Mayo/2016
Localización: Mexico
Estado: Sin conexión
Puntos: 387
Enlace directo a este mensaje Enviado: 03/Agosto/2023 a las 17:30
No, no importa solo que el dato (row) a mostrar sean los correspondientes a la fila.

Intente usar First, pero igual me devuelve todos los records. 
Aprendiz de todos, maestro de nadie.
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5704
Enlace directo a este mensaje Enviado: 03/Agosto/2023 a las 20:49
Y usar algo como:
SELECT DISTINCT *
FROM (select * from Data_Side1
UNION
select * from Data_Side2
UNION
select * from Data_Side3)
WHERE ((([%$##@_Alias].[PN]) Not Like "C*"))
[endcode]

o algo como:
SELECT DISTINCTROW *
FROM (select * from Data_Side1
UNION
select * from Data_Side2
UNION
select * from Data_Side3)
WHERE ((([%$##@_Alias].[PN]) Not Like "C*"))
[endcode]

Saludos.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1536
Enlace directo a este mensaje Enviado: 03/Agosto/2023 a las 22:13
Como no tengo todas tus tablas y consultas, he tomado los registros que has mostrado y creado una tabla:

TablaErick
PN Identificador Size MinCH NomCC MaxCC
REF25706 A 4 2.25 23 2.35
RAM46789 B 5 1.05 11 1.15
RAM46789 C 4 1.02 105 1.08
ERF46790 A 1 1.35 14 1.45
ERF46791 A 15 1.4 145 1.5
LDS29373 A 4 .82 85 .88
LDS29373 A 5 .9 95 1
REF91811 X 5 1.1 115 1.2
REF91812 A 8 1.25 13 1.35
CLS88505 B 4 .92 95 .98
CLS88505 B 5 .9 95 1

Sobre esta tabla, he creado una consulta de totales, agrupando por PN y devolviendo el primer dato de cada campo:

SELECT TablaErick.PN, First(TablaErick.Identificador) AS PrimeroDeIdentificador, First(TablaErick.Size) AS PrimeroDeSize, First(TablaErick.MinCH) AS PrimeroDeMinCH, First(TablaErick.NomCC) AS PrimeroDeNomCC, First(TablaErick.MaxCC) AS PrimeroDeMaxCC
FROM TablaErick
GROUP BY TablaErick.PN;

El resultado es este:

Consulta1
PN PrimeroDeIdentificador PrimeroDeSize PrimeroDeMinCH PrimeroDeNomCC PrimeroDeMaxCC
CLS88505 B 4 .92 95 .98
ERF46790 A 1 1.35 14 1.45
ERF46791 A 15 1.4 145 1.5
LDS29373 A 4 .82 85 .88
RAM46789 B 5 1.05 11 1.15
REF25706 A 4 2.25 23 2.35
REF91811 X 5 1.1 115 1.2
REF91812 A 8 1.25 13 1.35

Arriba
Erick Gamer Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 08/Mayo/2016
Localización: Mexico
Estado: Sin conexión
Puntos: 387
Enlace directo a este mensaje Enviado: 04/Agosto/2023 a las 00:36
Publicado originalmente por emiliove emiliove escribió:

Y usar algo como:
SELECT DISTINCT *
FROM (select * from Data_Side1
UNION
select * from Data_Side2
UNION
select * from Data_Side3)
WHERE ((([%$##@_Alias].[PN]) Not Like "C*"))
[endcode]

o algo como:
SELECT DISTINCTROW *
FROM (select * from Data_Side1
UNION
select * from Data_Side2
UNION
select * from Data_Side3)
WHERE ((([%$##@_Alias].[PN]) Not Like "C*"))
[endcode]

Saludos.

Esta consulta la habia intentado pero me devuelvia registros unicos por fila, es decir en la columna PN me devolvia registros duplicados porque en las demas columnas los valores eran diferentes.
Aprendiz de todos, maestro de nadie.
Arriba
Erick Gamer Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 08/Mayo/2016
Localización: Mexico
Estado: Sin conexión
Puntos: 387
Enlace directo a este mensaje Enviado: 04/Agosto/2023 a las 00:40
Publicado originalmente por pitxiku pitxiku escribió:

Como no tengo todas tus tablas y consultas, he tomado los registros que has mostrado y creado una tabla:

TablaErick
PN Identificador Size MinCH NomCC MaxCC
REF25706 A 4 2.25 23 2.35
RAM46789 B 5 1.05 11 1.15
RAM46789 C 4 1.02 105 1.08
ERF46790 A 1 1.35 14 1.45
ERF46791 A 15 1.4 145 1.5
LDS29373 A 4 .82 85 .88
LDS29373 A 5 .9 95 1
REF91811 X 5 1.1 115 1.2
REF91812 A 8 1.25 13 1.35
CLS88505 B 4 .92 95 .98
CLS88505 B 5 .9 95 1

Sobre esta tabla, he creado una consulta de totales, agrupando por PN y devolviendo el primer dato de cada campo:

SELECT TablaErick.PN, First(TablaErick.Identificador) AS PrimeroDeIdentificador, First(TablaErick.Size) AS PrimeroDeSize, First(TablaErick.MinCH) AS PrimeroDeMinCH, First(TablaErick.NomCC) AS PrimeroDeNomCC, First(TablaErick.MaxCC) AS PrimeroDeMaxCC
FROM TablaErick
GROUP BY TablaErick.PN;

El resultado es este:

Consulta1
PN PrimeroDeIdentificador PrimeroDeSize PrimeroDeMinCH PrimeroDeNomCC PrimeroDeMaxCC
CLS88505 B 4 .92 95 .98
ERF46790 A 1 1.35 14 1.45
ERF46791 A 15 1.4 145 1.5
LDS29373 A 4 .82 85 .88
RAM46789 B 5 1.05 11 1.15
REF25706 A 4 2.25 23 2.35
REF91811 X 5 1.1 115 1.2
REF91812 A 8 1.25 13 1.35


Gracias pitxiku, esto es exactamente lo que buscaba, pero lo estaba intentando en la misma consulta que mostre al inicio y no me funcionaba ya que estaba haciendo el First a el PN y no a los demas registros.

Estaba haciendo algo como esto:

SELECT * FROM FIRST PN (SELECT * FROM..... GROUP BY)

Esta tema esta solucionado.

Muchas gracias.

Erick Gamer.
Aprendiz de todos, maestro de nadie.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable