Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] dos llaves foraneas de una misma tabla

Estas en el tema de dos llaves foraneas de una misma tabla en el foro de SQL Server en Foros del Web. Buenas amigos del foro: Tengo una tabla llamada seguimiento en la cual tengo los sgtes campos: id_seguimiento,fecha_rec,id_persona_origen,id_pers ona_recepcion,fecha_salida,id_documento ambos campos id_persona_origen e id_persona_recepcion son llaves ...
  #1 (permalink)  
Antiguo 09/02/2014, 16:36
 
Fecha de Ingreso: noviembre-2012
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Busqueda dos llaves foraneas de una misma tabla

Buenas amigos del foro:
Tengo una tabla llamada seguimiento en la cual tengo los sgtes campos:
id_seguimiento,fecha_rec,id_persona_origen,id_pers ona_recepcion,fecha_salida,id_documento

ambos campos id_persona_origen e id_persona_recepcion son llaves foraneas hacia el campo id_persona de la tabla persona

el campo id_persona_origen corresponde al id de la persona que entrego un documento y el campo id_persona_recepcion corresponde al id de la persona que recibio dicho documento.

al momento de hacer una consulta para que me muestre los nombres de los usuarios no sale nada la consulta fue la siguiente:

Código SQL:
Ver original
  1. SELECT DISTINCT id_seguimiento, p.nombre+' '+ap_paterno  AS Emisor,
  2. p.nombre+' '+ap_paterno AS Receptor
  3. FROM seguimiento s,persona p,documento d
  4. WHERE s.id_persona_origen=p.id_persona AND s.id_persona_recepcion=p.id_persona
  5. AND d.id_documento=s.id_documento

pero los resultados son en blanco, alguien tiene una sugerencia para la consulta, o quizas para modificar campos de la tabla??

De antemano muchas gracias por tomarse tiempo de mirar este problemita

Última edición por gnzsoloyo; 09/02/2014 a las 17:30
  #2 (permalink)  
Antiguo 09/02/2014, 21:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: dos llaves foraneas de una misma tabla

usa left join, inner join etc en lugar de usar los joins implicitos........
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 11/02/2014, 09:23
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: dos llaves foraneas de una misma tabla

Prueba la misma consulta sin el where. Si no te funciona mándame (Editado: PDU 2.3 de FDW) el script completo de la BD para ejecutar la consulta en mi server. Saludos.

Última edición por gnzsoloyo; 11/02/2014 a las 09:50
  #4 (permalink)  
Antiguo 11/02/2014, 09:43
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: dos llaves foraneas de una misma tabla

Cita:
Iniciado por ericklanford Ver Mensaje
Prueba la misma consulta sin el where. Si no te funciona mándame ([email protected]) el script completo de la BD para ejecutar la consulta en mi server. Saludos.
el script completo??? orale, no te serviria nada mas un ejemplo de los datos???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 13/02/2014, 15:34
 
Fecha de Ingreso: noviembre-2012
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Respuesta: dos llaves foraneas de una misma tabla

Gracias por sus respuestas, no pude informarles antes porque estuve con otros proyectos... y pude solucionarlo, lo hice con subconsultas para que por cada una pueda igualar los campos correspondientes y asi no hay mas problemas . La solucion es esta:

S
Código SQL:
Ver original
  1. elect DISTINCT id_seguimiento,
  2. s.id_documento AS ID,
  3. (SELECT nombre FROM unidad u,contratos c WHERE u.id_unidad = c.id_unidad AND c.id_persona=s.id_persona_origen) AS 'Unidad anterior',
  4. (SELECT nombre+' '+ap_paterno FROM persona WHERE id_persona = s.id_persona_origen) AS Emisor,
  5. (SELECT nombre+' '+ap_paterno FROM persona WHERE id_persona = s.id_persona_recepcion) AS Receptor

espero esta pueda servirle a alguien en un futuro, y nuevamente gracias por las respuestas

Última edición por gnzsoloyo; 27/02/2014 a las 09:36
  #6 (permalink)  
Antiguo 13/02/2014, 16:27
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: dos llaves foraneas de una misma tabla

Hay quien le gusta atacar la base, pero a "pedrada limpia"
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 13/02/2014, 16:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: dos llaves foraneas de una misma tabla

Cita:
Iniciado por iislas Ver Mensaje
Hay quien le gusta atacar la base, pero a "pedrada limpia"
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 14/02/2014, 12:40
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: dos llaves foraneas de una misma tabla

Sickermanex, antes de implementar su query en la base de datos, revise cuantas lecturas se hacen con dicho query, espero que tome una diferente decisión al respecto.
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 27/02/2014, 08:24
 
Fecha de Ingreso: noviembre-2012
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Respuesta: dos llaves foraneas de una misma tabla

Cita:
Iniciado por iislas Ver Mensaje
Sickermanex, antes de implementar su query en la base de datos, revise cuantas lecturas se hacen con dicho query, espero que tome una diferente decisión al respecto.
Ehmmmm no entiendo, te refieres a las filas que me devuelve?? porque hasta ahora me devuelve los datos que quiero, sin problemas y sin necesidad de usar una sentencia DISTINCT antes de la consulta, pero como me dijeron creo que podria implenentar inner joins o left,right joins, pero no tengo tiempo para andar haciendo la prueba con todo, una vez que termine hare la prueba con un backup q tengo de la BD y si es asi mejor o igual lo implementare en la base de datos como una vista :D muchas gracias por el consejo
  #10 (permalink)  
Antiguo 27/02/2014, 09:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: dos llaves foraneas de una misma tabla

se refiere a las entradas y salidas que produce el query(traduscase como el performance de dicho query) porque asi como lo estas haciendo no es lo mas optimo ya que duplicas las lecturas que se hacen a la base para regresar el resultado.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: campo, llaves, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:31.