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

DUDA: combinar tablas de una base de datos

Estas en el tema de DUDA: combinar tablas de una base de datos en el foro de Mysql en Foros del Web. Buenos días, este es mi primer post (arranco con una duda , jejeje). El asunto es el siguiente: En el trabajo me pidieron la creación ...
  #1 (permalink)  
Antiguo 22/08/2012, 14:00
 
Fecha de Ingreso: agosto-2012
Ubicación: Arg
Mensajes: 48
Antigüedad: 11 años, 8 meses
Puntos: 3
DUDA: combinar tablas de una base de datos

Buenos días, este es mi primer post (arranco con una duda, jejeje).

El asunto es el siguiente:

En el trabajo me pidieron la creación de una base de datos y decidí abrir una cuenta en un host gratuito para poder usar phpmyadmin y mysql, aprovechando la ocasión para aprender a utilizar estos servicios como corresponde.

Por este pedido arme una base de datos (base_datos) y tengo distintas tablas dentro de esta:

(ej) tabla_coop
tabla_asoc

en la primer tabla (coop) tengo los campos 'nombre', 'matricula', 'provincia', 'localidad' y en la segunda (asoc) los campos 'nombre', 'dni', 'estado'.

Lo que necesito es saber como hacer para que en el formulario de consulta pueda pedir los nombres, dni y estados de los asociados (tabla "asoc") y poder ver dentro de que grupo estan (en la tabla "coop") o si en realidad me conviene hacer todo en una tabla.

Cree dos porque los asociados son aprox. 12.000 y pensé que era más conveniente


Espero que se entienda mi consulta.

Gracias!
  #2 (permalink)  
Antiguo 22/08/2012, 14:09
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años
Puntos: 19
Respuesta: DUDA: combinar tablas de una base de datos

Buenas tardes, podrias tener el la tabla asociados una clave foranea que seria el nombre de la cooperativa (de ser asi el caso, es mas o menos lo que entendi) y asi tener las 2 tablas relacionadas, claro esta que eso varia segun el negocio si un asociado puede permanecer a mas de una cooperativa alli tendrias una tabla detalle que nace de esas 2.

Sino es asi, Se un poco mas especifico para poder ayudarte.!
  #3 (permalink)  
Antiguo 22/08/2012, 14:10
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: DUDA: combinar tablas de una base de datos

Si los datos de la tabla asoc están relacionados muchos a uno con la tabla coop, sí es mejor hacer dos tablas, de lo contrario, estaría incluso perdiendo espacio y tiempo de proceso al dividirlas.

Tu consulta es más bien de mysql, no de php, pero en fin, puedes unir una tabla con otra de varias formas, con union, join, según necesites, aunque para lo que pides (pedir los nombres, dni y estados) creo que se puede simplemente con una común:

select from tabla_asoc where nombre='$nombre'
  #4 (permalink)  
Antiguo 23/08/2012, 08:22
 
Fecha de Ingreso: agosto-2012
Ubicación: Arg
Mensajes: 48
Antigüedad: 11 años, 8 meses
Puntos: 3
Respuesta: DUDA: combinar tablas de una base de datos

Gracias jlct y ocp001a por responder.

Las tablas ya están creadas y serían así:

tabla_coop

id | idcoop | mat | prov | local | estado

tabla_asoc

id | idasoc | dni | fechnac | cuit | estado | coop

Yo lo que quiero saber es como hacer que para una búsqueda de un campo de la tabla 'coop' me salgan los de la tabla 'asoc'

Por ejemplo: buscar en tabla 'coop' todas las de la provincia de Bs. As. y quienes están asociados a ellas.

Lo que tengo es esto, ¿es correcto?

Código PHP:
Ver original
  1. select asociados.nombre,cooperativa.nombre.matricula
  2.     from asociados
  3.         inner join cooperativas on cooperativas.Idcooperativas=cooperativas.Id;


gracias de nuevo y disculpas, recién empiezo con este tema porque me hicieron este pedido en el trabajo, así que estoy en cero total.
  #5 (permalink)  
Antiguo 28/08/2012, 06:34
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años
Puntos: 19
Respuesta: DUDA: combinar tablas de una base de datos

Segun lo que logro entenderte requieres algo como esto.

Select cooperativas.provincia, asociados.nombres from cooperativas inner join asociados on asociados.cooperativa=cooperativas.idcooperativas

para requerir mas datos solo debes mencionarlos antes del from pero la relacion entre ambos es como la hago en el join.

Espero te sirva!
  #6 (permalink)  
Antiguo 28/08/2012, 07:25
Avatar de altex  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 47
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: DUDA: combinar tablas de una base de datos

Yo te recomiendo una consulta del estilo:

Código MySQL:
Ver original
  1. SELECT c.provincia, a.nombres
  2. FROM cooperativas c
  3. JOIN asociados a ON a.coop = c.idcoop

Explicación:

c.provincia es la provincia de la tabla cooperativas, que le pones como alias "c" en el FROM:

Código MySQL:
Ver original
  1. FROM cooperativas c

a.nombres es nombres de la tabla asociados que le ponemos el alias en el JOIN:

Código MySQL:
Ver original
  1. JOIN asociados a

Luego juntamos la tabla por los ids, es decir, dentro de la tabla asociados tenemos el id de la cooperativa, por tanto juntamos el id de asociados con el id de la cooperativa:

Código MySQL:
Ver original
  1. JOIN asociados a ON a.coop = c.idcoop

De esta manera tienes una consulta clara y limpia y solo se juntaran los asociados que tengan alguna cooperativa.

En caso de que quieras que te salgan las cooperativas que no tienen asociado tienes que hacer un:

Código MySQL:
Ver original
  1. LEFT JOIN asociados a ON a.coop = c.idcoop

Puedes poner tantos campos en el select como quieras, poniendo su alias delante. Por ejemplo: a.dni o c.estado.
Si necesitas algún WHERE lo puedes poner despues del JOIN.

Espero haber podido ayudar :)

Etiquetas: combinar, formulario, tabla, tablas
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 09:46.