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

Dos tablas: consulta a ambas

Estas en el tema de Dos tablas: consulta a ambas en el foro de Mysql en Foros del Web. Hola! AYUDA! Tengo una tabla datos con id, apellido, fecha nacimiento, etc. Los id son únicos. Luego en una tabla matrimonios tengo las columnas id ...
  #1 (permalink)  
Antiguo 31/08/2006, 07:22
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
Dos tablas: consulta a ambas

Hola!
AYUDA!
Tengo una tabla datos con id, apellido, fecha nacimiento, etc. Los id son únicos.

Luego en una tabla matrimonios tengo las columnas id y idmatrimonio.
Acá los id se pueden repetir ya que pueden tener varios matrimonios.

Mi idea es: En base a la busqueda de un apellido, yo elijo a una persona (de la tabla datos) y envío el id a detalles.php.
En detalles.php necesito que se consulte con ese id, en la tabla matrimonios, cual es (o cuales son) el idmatrimonio correspondiente, y traer los datos de sus conyugues. Es decir, también debería identificar los ids de sus conyugues en la tabla matrimonios, para luego pedir sus nombres en la tabla datos.

¿Mucho embrollo?
Si es muy difícil, agrego idmatrimonio a la tabla datos. Pero la idea era no repetir tanto dato.
Gracias!!!!
  #2 (permalink)  
Antiguo 31/08/2006, 08:15
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Prueba:

Código:
//$id es la variable recibida por la url
select * from matrimonios where id=$id;
  #3 (permalink)  
Antiguo 01/09/2006, 11:14
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
Quizás no me expliqué bien:

Acá pongo la pregunta mejor explicada:

Info general sobre mi BD-> una sola tabla con apellidos, id, idmatrimonio, idpadres, fecha nacimiento, y algunos otros datos irrelevantes.
1.php -> conecta BD, muestra form, se busca apellido, consulta y trae listado (cada cual con su link).
2.php -> recibe $id, y hace 4 consultas. Una a datos de la persona, otra a matrimonio, otra a padres y otra para hijos. Muestra todos los datos.

Me anda todo perfecto. El GRAN problema es cuando una persona tiene mas de un matrimonio.
Al exportar mi ged a txt para poder importarlo a mysql, las personas con mas de 1 matrimonio, salen repetidas en la tabla, es decir, mismo id , mismos datos, MENOS el idmatrimonio que es distinto.
Ergo, al buscar el apellido con el script, por supuesto salen repetidas.

Mi idea es hacer otra tabla donde poner id e idmatrimonio, y hacer las repeticiones alli.

La pregunta sería: Si implementara el formato de dos tablas, como es la sentencia SELECT para que al presionar a "Pepe" y enviar su $id, busque todos sus idmatrimonio en la tabla nueva, Y A SU VEZ, busque quienes tienen ese idmatrimonio para visualizar sus conyugues.

QUE QUILOMBO!

  #4 (permalink)  
Antiguo 01/09/2006, 13:02
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Nada, muy simple, sólo debes conocer la clausula JOIN. Además el quilombo que haz armado es la forma correcta de trabajar (mormalizar la base de datos).

Código:
select campos_a_mostrar from personas p
inner join matrimonio m
on p.id=m.idpersona
where p.id=$id
En el ejemplo estoy suponiendo una tabla personas que guarda sólo los datos de cada individuo y una tabla matrimonios que almacena las uniones entre personas. Lo que aparece alli como "campos_a_mostrar" pueden ser campos de cualquiera de las 2 tablas y si hay 2 campos que se llaman iguales en ambas tablas, lo identifcas anteponiendo el alias o nombre de la tabla, como en el ejemplo: p.id y m.idpersona
  #5 (permalink)  
Antiguo 01/09/2006, 13:09
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
MUUUUCHAS gracias por tu tiempo.
La pruebo ahora mismo.

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 02:48.