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

Consulta relación muchos a muchos

Estas en el tema de Consulta relación muchos a muchos en el foro de Bases de Datos General en Foros del Web. Hola, necesito hacer la siguiente consulta con el siguiente supuesto: Tengo las siguientes tablas: EMPLEADOS id_empleado nombre telefono DEPARTAMENTOS id_departamentos departamento Como la relacion es ...
  #1 (permalink)  
Antiguo 01/10/2011, 04:19
 
Fecha de Ingreso: febrero-2002
Mensajes: 11
Antigüedad: 22 años, 2 meses
Puntos: 0
Consulta relación muchos a muchos

Hola, necesito hacer la siguiente consulta con el siguiente supuesto:

Tengo las siguientes tablas:

EMPLEADOS
id_empleado
nombre
telefono

DEPARTAMENTOS
id_departamentos
departamento

Como la relacion es de muchos a muchos (un mismo empleado puede pertenecer a varios departamentos diferentes) creo una tercera tabla para relacionar los ID.

EMPLEDEPTO
id_empleado
id_departamento

Partiendo de la base que tengo el ID de un departamento, por ejemplo el 5 ¿Como hago un Select para saber los empleados de dicho departamento...?


Muchas gracias y saludos
Fernando
  #2 (permalink)  
Antiguo 01/10/2011, 06:13
Avatar de gustavopino  
Fecha de Ingreso: septiembre-2011
Ubicación: venezuela
Mensajes: 152
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: Consulta relación muchos a muchos

Amigo yo tambiem tube esa incognita cuando hice el curso de IBM salia lo mismo bueno yo hice esto espero que te sirva:

para relacionar las tabla ya que la tabla EMPLEADOS va hacer la tabla padre tienes que hacer una consulta sql como esta:
Código SQL:
Ver original
  1. SELECT * FROM empleados INNER JOIN departamentos ON empleados.id_empleado = departamentos.id_departamentos.

Claro amigo que el id_empleado tiene que ser primary key y id_departamentos tiene que ser foreign key(si no me equivoco) y las tablas tiene que estar en TYPE=INNODB

Espero que te sirva.
__________________
Visita a Publiventa donde compras y vendes de todo
  #3 (permalink)  
Antiguo 01/10/2011, 07:56
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Consulta relación muchos a muchos

Si necesitas información de la tabla de departamentos, por ejemplo, el nombre del departamento, debes unir la tabla DEPARTAMENTOS también.

Código SQL:
Ver original
  1. SELECT *
  2. FROM EMPLEADOS
  3. INNER JOIN EMPLEDEPTO
  4.     ON (EMPLEADOS.id_empleado = EMPLEDEPTO.id_empleado)
  5. INNER JOIN DEPARTAMENTOS
  6.     ON (DEPARTAMENTOS.id_departamentos = EMPLEDEPTO.id_departamentos)
  7. #Para obtener los que pertenecen al departamento 5
  8. WHERE DEPARTAMENTOS.id_departamentos = 5;

De lo contrario puedes omitir la 2da unión.

@gustavopino, revisa tu consulta, no puedes unir las tablas departamentos y empleados directamente.
  #4 (permalink)  
Antiguo 01/10/2011, 09:06
Avatar de gustavopino  
Fecha de Ingreso: septiembre-2011
Ubicación: venezuela
Mensajes: 152
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: Consulta relación muchos a muchos

Código cita:
Ver original
  1. @gustavopino, revisa tu consulta, no puedes unir las tablas departamentos y empleados directamente.

Amigo documentate mas en sql ya que si se puede teniendo en una tabla el primary key a un id y en otra tabla puedes tener un foreing key en otro id que se relacione con la primera tabla si puedes hacer un inner join con las dos tablas.

Amigo ya yo lo tengo hecho y hasta ahora no he tenido problemas

Sin termino de ofender y gracias.
__________________
Visita a Publiventa donde compras y vendes de todo
  #5 (permalink)  
Antiguo 01/10/2011, 09:34
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Consulta relación muchos a muchos

Cita:
Iniciado por gustavopino
Amigo documentate mas en sql ya que si se puede teniendo en una tabla el primary key a un id y en otra tabla puedes tener un foreing key en otro id que se relacione con la primera tabla si puedes hacer un inner join con las dos tablas.

Amigo ya yo lo tengo hecho y hasta ahora no he tenido problemas

Sin termino de ofender y gracias.
¿"Sin termino de ofender"? O es sarcasmo o no sabes tratar con la gente cuando lo primero que dices es que me documente como si fuera un ignorante.

Ahora bien, tu 2do párrafo, si, ciertamente se puede hacer una relación cuando tienes una llave foránea pero en este caso la tabla de relaciones no la estas uniendo por lo que las tablas NO SE CONOCEN entre si. MySQL no es mágico que te hará la consulta y sepa que quieres decir.

Miremos las tablas empleados y departamentos:
EMPLEADOS
id_empleado
nombre
telefono

DEPARTAMENTOS
id_departamentos
departamento

Si solamente tienes esas tablas con esa información, porfavor ILUMINAME como harias la relacion... No puedes, por mas que trates, es por eso que necesitas una 3ra TABLA de relaciones:
EMPLEDEPTO
id_empleado
id_departamento

Y para encontrar los registros entre ellas es necesario obligatoriamente recurrir a la tabla de relaciones.
Por lo tanto, mi consulta es correcta.
Si no necesitas información sobre los departamentos y ya tienes el ID de los cuales deseas los empleados ahi no es necesario incluir en la relacion a la tabla departamentos. Pero aun asi, las tablas empleados y departamentos no tienen una relacion DIRECTA entre ellas.

Documentate, lee, razona y trata de verificar tus teorías antes de decirle a alguien que esta mal.
  #6 (permalink)  
Antiguo 01/10/2011, 11:31
Avatar de gustavopino  
Fecha de Ingreso: septiembre-2011
Ubicación: venezuela
Mensajes: 152
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: Consulta relación muchos a muchos

Amigo tienes rezon perdon no lo tomes a mal ya que no quiero niguna enemistad con nadien en este foroya que en este foro me han ayudado con mis proyectos y en realidad no quiero enemistad de verdad disculpame

Hasta luego!
__________________
Visita a Publiventa donde compras y vendes de todo

Etiquetas: muchos, tabla
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 16:28.