Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/01/2014, 23:00
Avatar de leo_garay91
leo_garay91
 
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 12 años
Puntos: 0
Respuesta: armar grupo familiar

Cita:
Iniciado por gnzsoloyo Ver Mensaje

Esa tabla tiene una PK definida por el par de FK, y si le pones una PK propia te arriesgas a que se repitan relaciones ya ingresadas. Porque estas serían válidas en tu modelo.
si, ahora comprendo.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿No se entendió tampoco que debes invocar dos veces la misma tabla con diferentes alias?
Cita:
Iniciado por gnzsoloyo Ver Mensaje
Necesitas repasar un poco más el modelo E-R en lo relativo a relaciones de cardinalidad N:N, y al caso específico de relación de una entidad con sigo misma.
eso no lo habia entendido bien, y en realidad no sabia como trabaja una relacion de una entidad consigo misma.

la unica modificacion que realice a la consulta fue en el where en donde le agregue || P2.id_persona= $id,
Código MySQL:
Ver original
  1.     P1.id_persona,
  2.     P1.nombre,
  3.     P1.apellido
  4.     P2.id_persona IdPariente,
  5.     P2.nombre NombrePariente,
  6.     P2.apellido ApellidoPariente
  7. FROM CS_familias f
  8.     INNER JOIN CS_personas P1 ON p1.id_persona=f.id_persona
  9.     INNER JOIN CS_personas P2 ON p2.id_persona=f.id_parentesco
  10. WHERE f.id_persona=$id || P2.id_persona= $id

porque por ejemplo:
Código MySQL:
Ver original
  1. SELECT P1.id_persona,P1.nombre,P1.apellido,P2.id_persona IdPariente,P2.nombre NombrePariente, P2.apellido ApellidoPariente,fecha,f.id_usuario,nombre_u,apellido_u FROM CS_familias f INNER JOIN CS_personas P1 ON P1.id_persona=f.id_persona INNER JOIN CS_personas P2 ON P2.id_persona=f.id_flia INNER JOIN CS_usuarios u ON u.id_usuario = f.id_usuario WHERE f.id_persona=21

me arroja esos resultados, pero cuando por al perfil de la persona 29 osea, en el WHERE f.id_persona=29, no me arrojaba nada
+------------+--------+----------+------------+----------------+------------------+
| id_persona | nombre | apellido | IdPariente | NombrePariente | ApellidoPariente |
+------------+--------+----------+------------+----------------+------------------+
| 21 | Elva | Aguer | 29 | Domingo | Garay |
| 21 | Elva | Aguer | 7 | Leonardo Ramon | Garay |
| 21 | Elva | Aguer | 30 | Glady | Garay |
+------------+--------+----------+------------+----------------+------------------+
Código MySQL:
Ver original
  1. SELECT P1.id_persona,P1.nombre,P1.apellido,P2.id_persona IdPariente,P2.nombre NombrePariente, P2.apellido ApellidoPariente FROM CS_familias f INNER JOIN CS_personas P1 ON P1.id_persona=f.id_persona INNER JOIN CS_personas P2 ON P2.id_persona=f.id_flia INNER JOIN CS_usuarios u ON u.id_usuario = f.id_usuario WHERE f.id_persona=29 ||P2.id_persona=29;
+------------+--------+----------+------------+----------------+------------------+
| id_persona | nombre | apellido | IdPariente | NombrePariente | ApellidoPariente |
+------------+--------+----------+------------+----------------+------------------+
| 21 | Elva | Aguer | 29 | Domingo | Garay |
+------------+--------+----------+------------+----------------+------------------+

bueno despues todo el quilombo que hice, entendi varias cosas, muchas gracias...