
¿Cómo evitar datos duplicadas que comparten un mismo ID en SQL?
Publicado por anonymous (3 intervenciones) el 26/03/2022 23:36:00
Acudo a ustedes ya que tengo una situación con una consulta a una base de datos. Tengo 2 tablas; una de objetos y otra de programación de objetos, la tabla de objetos hereda a la tabla de programación de objetos asi:

Ya que un objeto puede detonar que otro se ejecute.
Deseo obtener justo eso los objetos de tipo proceso(2 es el del tipo de objeto "proceso"), sus detonantes, su tipo de programación y el id de programación. Ya pude consultar el id de programacion, id del objeto su nombre, su detonante y el tipo de objeto con la siguiente consulta:
La cual me devuelve algo asi:

Pero al volver a conectar con la tabla objeto para obtener el nombre del detonante me duplica los valores, ya que en la tabla objeto existen varios objetos que tienen el mismo id por ejemplo el mismo id de la consulta pasada:

Entonces al ejecutar la siguiente consulta:
Me da este resultado:

Y yo solo busco traer el registro del "detonante1", ya intente con distinct, top, min y el id del detonante no tiene algo con que poderlo concidionar para que solo traiga el del "detonante1", ademas de que al quitarle solo que busque el id 21 los demas tambien los duplicará si los otros id pertenecen a mas de 1 objeto.
Quisiera saber si ustedes conocen alguna otra forma de hacer que no me lo repita esas 4 veces que lo hace y solo me muestre 1 como debería de ser. De antemano les agradezco el que me puedan orientar en si estoy haciendo algo mal, me esta faltando o sobrando algo al realizar la consulta.
Ya que un objeto puede detonar que otro se ejecute.
Deseo obtener justo eso los objetos de tipo proceso(2 es el del tipo de objeto "proceso"), sus detonantes, su tipo de programación y el id de programación. Ya pude consultar el id de programacion, id del objeto su nombre, su detonante y el tipo de objeto con la siguiente consulta:
1
2
3
4
5
Select p.ID_PROG,F.ID_OBJ AS ID_OBJETO, F.NOMBRE AS NOMBRE_OBJETO , p.ID_EVT,
TIPO_PROG
FROM programacion P
left JOIN objeto F ON F.ID_OBJ = P.ID_OBJ
WHERE F.TIPO_OBJ=2 AND P.ID_EVT=21;
La cual me devuelve algo asi:
Pero al volver a conectar con la tabla objeto para obtener el nombre del detonante me duplica los valores, ya que en la tabla objeto existen varios objetos que tienen el mismo id por ejemplo el mismo id de la consulta pasada:
Entonces al ejecutar la siguiente consulta:
1
2
3
4
5
6
SELECT ID_PROG,F.ID_OBJ AS ID_OBJETO, F.NOMBRE AS NOMBRE_OBJETO , P.ID_EVT,FT.NOMBRE
AS DISPARADOR_DE_EVENTO, TIPO_PROG
FROM PROGRACION P
right JOIN OBJETO F ON P.ID_OBJ = F.G_OBJID
right JOIN OBJETO FT ON P.ID_EVT = FT.G_OBJID
WHERE F.TIPO_OBJ=2 AND P.ID_EVT=21 ;
Me da este resultado:
Y yo solo busco traer el registro del "detonante1", ya intente con distinct, top, min y el id del detonante no tiene algo con que poderlo concidionar para que solo traiga el del "detonante1", ademas de que al quitarle solo que busque el id 21 los demas tambien los duplicará si los otros id pertenecen a mas de 1 objeto.
Quisiera saber si ustedes conocen alguna otra forma de hacer que no me lo repita esas 4 veces que lo hace y solo me muestre 1 como debería de ser. De antemano les agradezco el que me puedan orientar en si estoy haciendo algo mal, me esta faltando o sobrando algo al realizar la consulta.
Valora esta pregunta


0