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

Duda fácil con Inner Join

Estas en el tema de Duda fácil con Inner Join en el foro de Mysql en Foros del Web. Hola a todos. Me han encargado hacer una cosa, que creo que es muy fácil, pero debido a mi inexperiencia con MySQL, no lo consigo ...
  #1 (permalink)  
Antiguo 17/09/2013, 10:15
 
Fecha de Ingreso: febrero-2013
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Duda fácil con Inner Join

Hola a todos.

Me han encargado hacer una cosa, que creo que es muy fácil, pero debido a mi inexperiencia con MySQL, no lo consigo hacer.

Veréis, tengo que trabajar con 2 tablas ya creadas y no puedo modificar la estructura de las tablas, una tabla se llama proyectos y otra colaboraciones.

En proyectos tengo las columnas id, nombre, autor y alguna columna mas que no viene a cuento.

En colaboraciones tengo las columnas id, proyecto y colaborador.

La columna id en la tabla proyectos, esta relacionada con la columna proyecto en la tabla colaboraciones.

Hasta aquí todo bien, ahora hay una pagina en PHP, donde los usuarios pueden ver que proyectos tienen activos ellos y en cuales están colaborando y aquí viene el problema, para ver los proyectos que tienen activos se usa:

select * from proyectos where autor='$username'";

Y el usuario puede ver todos los datos correctamente.

Pero para los proyectos en los que está colaborando, se usa el comando:

select * from colaboraciones where colaborador='$username'";

Aquí esta el problema, porque solo se ve el ID del proyecto y no su NOMBRE que es lo que queremos ver.

Necesitan que se vea el NOMBRE del proyecto en lugar del ID del proyecto, pero el nombre del proyecto no está en la tabla colaboraciones.

Creo que aplicando un INNER JOIN, se solucionaría fácilmente el problema, pero no se como.

¿Me pueden ayudar?

Gracias por adelantado.

P.D: la Web no es publica, es una Intranet, así que no les puedo indicar la página.
  #2 (permalink)  
Antiguo 17/09/2013, 10:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Estaba muy poco claro, pero creo que esto sería lo que buscas:
Código MySQL:
Ver original
  1. SELECT P.nombre NombreProyecto, P.autor, C.colaborador
  2. FROM proyectos P INNER JOIN colaboradores C ON P.id = C.proyecto
  3. WHERE P.autor='$username' OR C.colaborador = '$username'
Por cierto: Lo correcto es que hubiese una tabla de la relación entre proyectos y colaboradores, que sólo contuviese las FK de ambos. Estás generando datos redundantes, poniendo en peligro la consistencia de la información.
Cita:
P.D: la Web no es publica, es una Intranet, así que no les puedo indicar la página.
De haberla puesto, la habríamos tenido que borrar.
Poner una dirección web no documental (todo lo que no sea manuales, documentos técnicos, sitios oficiales de BBDD, o cosas así), se puede considerar autorpomo, y es eliminado, en base a las Políticas de Uso de FDW.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 17/09/2013 a las 10:59
  #3 (permalink)  
Antiguo 17/09/2013, 11:30
 
Fecha de Ingreso: febrero-2013
Mensajes: 12
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Duda fácil con Inner Join

Ok, lo he probado y parece que eso es lo que necesito.

MUCHISIMAS gracias.

Ahora voy a ver como lo integro en PHP.

Última edición por Ricardo2001; 17/09/2013 a las 11:39

Etiquetas: join, php, select, sql, 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 17:49.