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

relacionar tablas en mysql

Estas en el tema de relacionar tablas en mysql en el foro de Bases de Datos General en Foros del Web. tengo entendido que para relacionar 2 tablas, debe existir un campo comun entre ambas. ahora me planteo si uno de esos campos tiene que ser ...
  #1 (permalink)  
Antiguo 07/10/2004, 03:06
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
relacionar tablas en mysql

tengo entendido que para relacionar 2 tablas, debe existir un campo comun entre ambas.
ahora me planteo si uno de esos campos tiene que ser clave sobre todo si quiero hacer una relacion de uno a varios.

Con access lo tengo claro aqui en mysql no tanto, si me expliaran un poco gracias.
  #2 (permalink)  
Antiguo 07/10/2004, 11:57
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 8 meses
Puntos: 1
en normalización de BD sería recomendable que los campos que se desean relacionar fueran llaves... asi manejarías llaves primarias y foráneas.

En MySQL depende mucho del tipo de BD que estés manejando como ves existen varios tipos de BD que maneja MySQL... el normal que es MyISAM no maneja este tipo de llaves sin embargo puedes hacer joins haciendo la consulta de las dos tablas e igualando los dos campos.

Si quieres manejar llaves primarias y foráneas, podrías utilizar InnoDB que si lo soporta.
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"
  #3 (permalink)  
Antiguo 07/10/2004, 14:10
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
me puedes poner un ejemplo con joins??

por favor
  #4 (permalink)  
Antiguo 08/10/2004, 01:42
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 8 meses
Puntos: 1
Lo común es hacer inner joins.. o left joins... que te traería lo común entre las dos tablas que es lo que necesitas es:

Código:
SELECT * FROM table1
LEFT JOIN table2 ON table1.id=table2.id
ó

Código:
SELECT * FROM table1
INNER JOIN table2 ON table1.id=table2.id
ó

Código:
 
SELECT * FROM table1
NATURAL JOIN table2 ON table1.id=table2.id
otra forma más informal de relacionar dos tablas es igualando sus columnas relacionadas así

Código:
 
SELECT t1.name, t2.salary FROM employee AS t1, info AS t2
WHERE t1.name = t2.name;
Saludos!
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"
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.
Tema Cerrado




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