Retroceder   Foros del Web > Programación para sitios web > PHP
Crea un nuevo usuario o inicia sesión utilizando tu cuenta de Facebook
Connect with Facebook

Respuesta
 
Herramientas Desplegado
Antiguo 15-dic-2008, 09:14   #1 (permalink)
Threepwood se está portando bien
 
Avatar de Threepwood
 
Fecha de Ingreso: noviembre-2002
Ubicación: Xalapa, Veracruz, México
Mensajes: 814
Enviar un mensaje por Skype™ a Threepwood
Threepwood está desconectado
Vincular una fila de una tabla con una o mas filas de otra

Hola!

A ver si logró explicarme correctamente para que me den luz sobre este problema.

Tengo dos tablas en mi BD 8MySql. Una llamada Obras y otra llamada Personas. en Obras está Título y otros campos que no sean nombres propios. En Personas están todas las personas (dirctores, autores, reparto, iluminacion) que forman parte de una obra especifica. También en Personas hay un campo llamado 'id_obra' que identifica en que obra han participado y otro que es 'profesion' para saber dónde colocar el dato. A grandes ragos la tabla Nombres es así:

ID (aut_increm) - id_obra - Nombre - Profesión

Y al mostrar la ficha de la obra, hago el query asi:

Código PHP:
$query_nombre "SELECT id, id_ficha, nombre, profesion FROM autores WHERE id_ficha = '$id' AND profesion = 'autor'"
Hasta ahora todo funciona correctamente (para mi, increible). Ahora surgió el primer problema:

Hay ocasiones en que un mismo Nombre participa en dos obras, por ejemplo, dos obras del mismo dramaturgo. En ese caso, si se introduce, por ejemplo, Juan Perez de profesion dramaturgo, y ya existe, no vuelvo a insertar el registro en la tabla (esto porque cada persona va a tener su perfil).

Por lo que la pregunta es... ¿Cómo hacer para mostrar en una Obra (digamos la id=44) al dramaturgo que está en la 44 pero tambien en la 62?

Es decir, el campo ID_Obra debería tener 44, 62 pero entonces mi query ya no funcionaría...


Agradezco mucho sus sugerenciias :), también si se les ocurre una manera de reestructurar la tabla para que funcione, no hay ningun problema.


Samuel.
__________________
Samuel Albores
Xalapa, Veracruz, México
Inter-Cambio
DiezPesitos
  Responder Citando
Antiguo 15-dic-2008, 09:23   #2 (permalink)
internetgdl se está portando bien
 
Fecha de Ingreso: octubre-2004
Mensajes: 88
internetgdl está desconectado
Respuesta: Vincular una fila de una tabla con una o mas filas de otra

Hola, que tal.
En el diseño de bases de datos dice que cuando en tu diagrama Entidad Relacion dos entidades van de muchos a muchos tienes que crear una tercer entidad que se encarge de relacionar ambas.

Es decir debes de crear otra tabla nadamas para poner las relaciones, con esto ya podras hacer una query involucrando las 3 tablas.


select * from obras, personas, relacion where persona.id = relacion.persona and relacion.obra = obra.id

espero me haya dado a entender
__________________
Consejos de Programación
  Responder Citando
Antiguo 15-dic-2008, 09:24   #3 (permalink)
the_web_saint se está ganando tu confianza
 
Avatar de the_web_saint
 
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.115
the_web_saint está desconectado
Respuesta: Vincular una fila de una tabla con una o mas filas de otra

Creoq ue necesitas una tabla intermedia. Creo que tienes una relacion de muchos a muchos y la solución es con una tabla que una por ejemplo el id de la persona con el id de la obra.

Saludos

EDITADO: Choque de frente compañero
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  Responder Citando
Antiguo 15-dic-2008, 10:11   #4 (permalink)
Threepwood se está portando bien
 
Avatar de Threepwood
 
Fecha de Ingreso: noviembre-2002
Ubicación: Xalapa, Veracruz, México
Mensajes: 814
Enviar un mensaje por Skype™ a Threepwood
Threepwood está desconectado
Respuesta: Vincular una fila de una tabla con una o mas filas de otra

Muchas gracias a ambos.

Nunca he hecho algo así.... esa tercera tabla que una Personas y Obras, cómo sería?

Y cómo y que datos le insertaria a esa tabla?

Muchas gracias por su ayuda

Samuel.
__________________
Samuel Albores
Xalapa, Veracruz, México
Inter-Cambio
DiezPesitos
  Responder Citando
Antiguo 15-dic-2008, 10:38   #5 (permalink)
Proguri se está portando bien
 
Fecha de Ingreso: abril-2008
Ubicación: Uruguay - Canelones
Mensajes: 148
Proguri está desconectado
Respuesta: Vincular una fila de una tabla con una o mas filas de otra

Hi !

Seria una tabla: "obra_persona". Y almacenaria los indices de cada una de esas tablas:
- id_obra
- id_persona

Luego al hacer una consulta realizas un INNER JOIN Para levantar los resultados pertinentes.

Espero te sea util!

-ByE-
__________________
Game Source Studios © Blog ! PHP, VB.NET, humor, Etc.
Tu fuente de Recursos en linea! :)
  Responder Citando
Antiguo 15-dic-2008, 10:54   #6 (permalink)
Threepwood se está portando bien
 
Avatar de Threepwood
 
Fecha de Ingreso: noviembre-2002
Ubicación: Xalapa, Veracruz, México
Mensajes: 814
Enviar un mensaje por Skype™ a Threepwood
Threepwood está desconectado
Respuesta: Vincular una fila de una tabla con una o mas filas de otra

Hola, Proguri.

Crreo que ya voy entendiendo.

Entonces la tabla obra_persona se vería mas o menos así?

id_obra - id_persona
44 25
66 25


Con eso quiero decir que la persona 25 participo en la 66 y en la 44... y ya luego hago el SELECT como tu dices...


Espero que salga bien, gracias por la ayuda
__________________
Samuel Albores
Xalapa, Veracruz, México
Inter-Cambio
DiezPesitos
  Responder Citando
Antiguo 15-dic-2008, 11:02   #7 (permalink)
Proguri se está portando bien
 
Fecha de Ingreso: abril-2008
Ubicación: Uruguay - Canelones
Mensajes: 148
Proguri está desconectado
Respuesta: Vincular una fila de una tabla con una o mas filas de otra

Hi !

Exacto, eso deberia ser más que suficiente y es el metodo más depurado de hacerlo ya que es el modelo entidad relación, cuando muchas entidades de una tabla se pueden relacionar con 1 o más de otra tabla (N a N) se debe crear una tabla intermedia que guarde los datos de los indices de las otras 2. Facil y rapido (?) jeje

Suerte con el proyecto :)

-ByE-
__________________
Game Source Studios © Blog ! PHP, VB.NET, humor, Etc.
Tu fuente de Recursos en linea! :)
  Responder Citando
Antiguo 15-dic-2008, 12:33   #8 (permalink)
Threepwood se está portando bien
 
Avatar de Threepwood
 
Fecha de Ingreso: noviembre-2002
Ubicación: Xalapa, Veracruz, México
Mensajes: 814
Enviar un mensaje por Skype™ a Threepwood
Threepwood está desconectado
Respuesta: Vincular una fila de una tabla con una o mas filas de otra

Hola de nuevo!

Solucioné el problema (yeii!) pero ahora ha aparecido otro :(. Siento que todo viene desd el diseño de la BD, como al final lo que me pidieron no tiene nada que ver con lo que me habían planteado en el principio, pues es como ir corrigiendo errores sobre la marcha. en fin, a ver si me pueden ayudar con esto.

Ya tengo los datos de relación en obras_personas. De manera que si la persona no existe, la agrego y la muestro en su ficha. Si existe, no la añado, siifica que ya está en otra obra y la muestro ahi también.

Ahora, en la tabla "personas" hay un campo llamado profesión. Ahi pueden ser autores, directores, escegrafos, etc. Esto me sirve para saber dónde colocar el nombre.

El problema es el siguiente: Hay veces que una misma persona es dos cosas. Por ejemplo, director y dramaturgo. Entonces ahi se me complica todo porque yo hago el query asi:

Código PHP:

$query_nombre 
"SELECT * FROM obras, personas, obra_persona WHERE personas.id = obra_persona.id_persona and obra_persona.id_obra = obras.id and personas.profesion = 'director' and obra_persona.id_obra = '$id'"
Asi voy buscando cada dato de la tabla, pero obviamente si hay un persona que hace dos cosas, el query no resulta.

Yo había pensando hacer algo asi, no se si funcionaría:


Al momento de añadir la ficha, si el nombre YA existe, tomar el registro y actualizar el campo "profesion", por ejemplo: Director Dramaturgo.

Cuando muestro la ficha hacer el Query usando, por ejemplo:

WHERE profesion LIKE '%director%'"


Funcionaría de esa manera?

Alguna otra idea, además de rehacer la base de datos?
__________________
Samuel Albores
Xalapa, Veracruz, México
Inter-Cambio
DiezPesitos
  Responder Citando
Respuesta
No hay votos aún.
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.

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code está Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado
Trackbacks está Desactivado
Pingbacks está Desactivado
Refbacks está Desactivado



La zona horaria es GMT -6. Ahora son las 06:40.
Políticas de Uso de Foros del Web


Message Board Statistics

SEO by vBSEO 3.3.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100