SQL - ¿Cómo evitar datos duplicadas que comparten un mismo ID en SQL?

 
Vista:
sin imagen de perfil

¿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:

1

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:


2

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:

3

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:

4

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

¿Cómo evitar datos duplicadas que comparten un mismo ID en SQL?

Publicado por anonymous (3 intervenciones) el 26/03/2022 23:39:06
Una disculpa el id_obj de la 3ra imagen es 54 no 21 la imagen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo evitar datos duplicadas que comparten un mismo ID en SQL?

Publicado por teayudo (2 intervenciones) el 30/03/2022 20:37:17
Pues la verdad no se logra entender muy bien tus estructuras.

Pero se alcanza a ver que estás accediendo a la misma tabla Objeto dos veces con alias de F y FT

Y tienes rigth en su unión el rigth te trae cualquier cosa que coincida con la tabla de tu derecha.

Cuando eso debería poder hacerse con Inner join y buscar que esas estructuras manejen Primary Key a fin de que no repita registros
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo evitar datos duplicadas que comparten un mismo ID en SQL?

Publicado por teayudo (2 intervenciones) el 30/03/2022 20:38:54
Y entre otras cosas, se alcanza a ver que el id_evt = 21 no existe, por lo menos lo que muestras solo trae el 54
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar