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

Ayuda con un consulta de unión

Estas en el tema de Ayuda con un consulta de unión en el foro de Mysql en Foros del Web. Bueno tengo un problema que no consigo resolver, llevo sólo unos meses aprendiendo. Llevo un tiempo buscando en el foro y no he visto un ...
  #1 (permalink)  
Antiguo 12/10/2009, 02:47
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 0
Ayuda con un consulta de unión

Bueno tengo un problema que no consigo resolver, llevo sólo unos meses aprendiendo. Llevo un tiempo buscando en el foro y no he visto un ejemplo igual, A ver si me explico. Da un poco de corte, porque la solución debe ser muy sencilla.

Estoy haciendo una base de datos de un grupo de personas distribuidas en grupos de trabajo. Hay 30 grupos de trabajo y cada uno lo forman 26 personas, y una misma persona puede estar en varios grupos de trabajo.

Tengo una tabla general con ID_persona, Nombre, Apellidos.
Una tabla con los nombre de los grupos de trabajo: ID_grupo, Nombre_grupo
Y una tabla con la composición de cada grupo trabajo ID_persona, ID_grupo, Cargo.

El problema es que necesito saber de una sola persona en que grupos está inscrito y el cargo que ocupa.
Lo intento por probar con dos tablas solo.

SELECT c_cultura.ID, c_sanidad.ID
FROM c_cultura, c_sanidad
WHERE c_cultura.ID =190
OR c_sanidad.ID =190

En mi lógica debería ser algo así, pero no funciona. En cultura si está el 190 pero en sanidad no, entonces me devuelve el 190 en cultura_ID y todos en sanidad_ID. Si en vez de OR pongo AND, como no está en sanidad me devuelve vacio...

En fin si me podéis echar una mano, gracias.
  #2 (permalink)  
Antiguo 12/10/2009, 09:22
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 2 meses
Puntos: 46
Respuesta: Ayuda con un consulta de unión

Hola.

Código:
select
     personas.nombre, //selecciona nombre de la persona
     grupos.nombre, //selecciona nombre del grupo
     grupos.cargo //selecciona el cargo
 from
     personas, //indica las tablas que utiliza en la consulta
     grupos,
     cargos,
 where
     personas.id_persona=cargos.ID_persona and  //verifica que el ide de la persona corresponda en la tabla de cargos
     grupos.ID_grupo=cargos.ID_grupo and //verifica que el id del grupo este en la tabla de cargos
     personas.ID_persona='n'// y por ultimo el id de la persona que buscamos
suerte, estamos en contacto.

NOTA: asumo que la tabla en la que contienes personas se llama PERSONAS, la de grupos GRUPOS y la otra VARGOS
  #3 (permalink)  
Antiguo 12/10/2009, 10:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Ayuda con un consulta de unión

Aunque el consejo de lair te funcionará, yo te recomendaría el uso de INNER JOIN para el cruce de tablas (se utilizan los índices) y dejar el WHERE para el parámetro de búsqueda.
Código sql:
Ver original
  1. SELECT
  2.      personas.nombre, //selecciona nombre de la persona
  3.      grupos.nombre, //selecciona nombre del grupo
  4.      grupos.cargo //selecciona el cargo
  5. FROM personas INNER JOIN cargos USING (id_persona) INNER JOIN grupos USING (ID_grupo) WHERE personas.ID_persona= 5// y por ultimo el id de la persona que buscamos
  #4 (permalink)  
Antiguo 12/10/2009, 23:54
 
Fecha de Ingreso: julio-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda con un consulta de unión

Muchísimas gracias por las respuestas. Mi problema era que tenía 30 tablas distintas, una para cada grupo de trabajo. Entendí que debía unificar estas tablas en una sola y así funciona perfectamente. Mil gracias otra vez
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 08:52.