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

Duda con un JOIN

Estas en el tema de Duda con un JOIN en el foro de Mysql en Foros del Web. Hola! Esta ves intento hacer un foro, pero me ha surgido una duda. Suponiendo que tengo estas tablas: TABLA TOPICO, ID_TOPICO, ID_USUARIO, TITULO_TOPICO, CONTENIDO, RESPUESTAS, ...
  #1 (permalink)  
Antiguo 01/02/2010, 11:53
 
Fecha de Ingreso: enero-2010
Mensajes: 88
Antigüedad: 14 años, 3 meses
Puntos: 2
Duda con un JOIN

Hola!

Esta ves intento hacer un foro, pero me ha surgido una duda. Suponiendo que tengo estas tablas:

TABLA TOPICO, ID_TOPICO, ID_USUARIO, TITULO_TOPICO, CONTENIDO, RESPUESTAS, ID_USUARIO_ULTIMO_POST

TABLA POST, ID_POST, ID_TOPICO, TITULO ETC

TABLA USUARIO, ID_USUARIO, NOMBRE_USARIO, ETC

Cuando en el index de un foro, intento mostrar todos los topicos publicados, hago un JOIN entre el ID_USUARIO de la tabla TOPICO y la tabla USUARIO para asi mostrar al creador del topico. Pero tambien quiero mostrar al creador del ultimo post en el topico y necesitaria hacer otro JOIN entre ID_USUARIO_ULTIMO_POST de la tabla TOPICO y ID_USUARIO de la tabla USUARIO. Mi duda es ¿Puedo hacer 2 Join entre 2 tablas?. ¿O mi sistema de bd esta mal?

Queria saber antes de comenzar a programar cosas y despues darme cuenta que no funciona

Ojala puedan ayudarme, de antemano muchas gracias.
  #2 (permalink)  
Antiguo 01/02/2010, 19:08
 
Fecha de Ingreso: enero-2010
Mensajes: 88
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Duda con un JOIN

Ya tengo la conculta:

SELECT T.ID_TOPICO, T.ID_FORO, T.ID_USUARIO, T.TITULO, T.CONTENIDO, T.FECHA, T.STICK, T.VISITA, T.ID_USUARIO_ULTIMO_POST, T.FECHA_ULTIMO_POST, T.RESPUESTAS, u.user_id, u.username, P.ID_USUARIO FROM TOPICO T INNER JOIN alumno_users u ON T.ID_USUARIO = u.user_id LEFT JOIN POST P ON T.ID_TOPICO = P.ID_TOPICO INNER JOIN alumno_users u ON T.ID_USUARIO_ULTIMO_POST = u.user_id WHERE T.ID_FORO = $id_foro GROUP BY T.ID_TOPICO ORDER BY T.FECHA_ULTIMO_POST DESC

Ahora, como ven, tengo los 2 JOINS con la tabla de los usuarios. Para mostrar el nombre del creador del topico lo llamo así:

while($prox = mysql_fetch_array($resultados))
{
$nombre = $prox['username'];

}

Pero ahora. Como diferencio el $prox['username'] del Join del creador del topico, del $prox['username'] que viene del vreador del ultimo post en el topico.

¿Se entiende?...

De antemano muchas gracias
  #3 (permalink)  
Antiguo 02/02/2010, 07:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Duda con un JOIN

Debes asignar un ALIAS diferente a la tabla y al campo en sí. Por ejemplo:
Código MySQL:
Ver original
  1.     T.ID_TOPICO,
  2.     T.ID_FORO,
  3.     T.ID_USUARIO,
  4.     T.TITULO,
  5.     T.CONTENIDO,
  6.     T.FECHA,
  7.     T.STICK,
  8.     T.VISITA,
  9.     T.ID_USUARIO_ULTIMO_POST,
  10.     T.FECHA_ULTIMO_POST,
  11.     T.RESPUESTAS,
  12.     u.user_id,
  13.     u.username,
  14.     P.ID_USUARIO,
  15.     ul.username username_u
  16.     TOPICO T
  17.     alumno_users u
  18.     ON
  19.         T.ID_USUARIO = u.user_id
  20.     alumno_users ul
  21.     ON
  22.         T.ID_USUARIO_ULTIMO_POST = ul.user_id
  23.     POST P
  24.     ON
  25.         T.ID_TOPICO = P.ID_TOPICO
  26.     T.ID_FORO = $id_foro
  27. GROUP BY T.ID_TOPICO
  28. ORDER BY T.FECHA_ULTIMO_POST DESC
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 02/02/2010, 15:18
 
Fecha de Ingreso: enero-2010
Mensajes: 88
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Duda con un JOIN

Muchas muchas gracias

Etiquetas: join
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 21:21.