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

JOIN con tres tablas. perdido!

Estas en el tema de JOIN con tres tablas. perdido! en el foro de Mysql en Foros del Web. a ver, tengo tres tablas: posts, members y comments. de las cuales quiero sacar: de posts el campo title, de members el username y de ...
  #1 (permalink)  
Antiguo 24/08/2010, 07:13
 
Fecha de Ingreso: septiembre-2004
Mensajes: 12
Antigüedad: 20 años, 2 meses
Puntos: 0
JOIN con tres tablas. perdido!

a ver, tengo tres tablas: posts, members y comments. de las cuales quiero sacar:
de posts el campo title, de members el username y de comments todo.
Las tres están relacionadas por el mismo USERID.

como puedo hacer esto con JOIN?

Gracias de antemano.
  #2 (permalink)  
Antiguo 24/08/2010, 07:21
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: JOIN con tres tablas. perdido!

Código MySQL:
Ver original
  1. p.title,
  2. m.username,
  3. c.*
  4. FROM posts p
  5. members m
  6. p.USERID = m.USERID
  7. comments c
  8. p.USERID = c.USERID;

así te sirve?

salduos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 24/08/2010, 07:50
 
Fecha de Ingreso: septiembre-2004
Mensajes: 12
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: JOIN con tres tablas. perdido!

intentaré explicar mejor.
tengo tres tablas posts, comments y members.

quiero hacer una consulta a determinada ID, ejemplo 80.

quiero que me devuelva el msg de comments, ese registro está asociado por un USERID, entonces por obtenga de posts el title y de igual manera el username de members

para mostrar algo así: username escribio:bla bla bla en titulo del post.
  #4 (permalink)  
Antiguo 24/08/2010, 07:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: JOIN con tres tablas. perdido!

Que tiene de malo la consulta que te doy? En que parte difiere de lo que pides?

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 24/08/2010, 08:18
 
Fecha de Ingreso: septiembre-2004
Mensajes: 12
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: JOIN con tres tablas. perdido!

Este es mi esquema:


posts: |ID|title|
----------------
|1 |post title| (ejemplo)

comments: |USERID|UID|msg| (UID es el mismo que posts.ID)
-----------------------------
|5 |1 |message| (ejemplo)

members: |USERID|username|
-----------------------------
|5 |myusername| (ejemplo)


al yo indicarle la ID (posts) quiero que me devuelva inmediatamente el title, de comments los msg asociados a ese ID y el username asociado a cada msg.

espero haber sido mas claro. gracias
  #6 (permalink)  
Antiguo 24/08/2010, 08:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: JOIN con tres tablas. perdido!

Código MySQL:
Ver original
  1. p.title,
  2. m.username,
  3. c.*
  4. FROM posts p
  5. members m
  6. p.USERID = m.USERID
  7. comments c
  8. p.ID = c.UID
  9. WHERE p.ID=1;

Que tal así?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 24/08/2010, 08:34
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
Respuesta: JOIN con tres tablas. perdido!

El error es que al principio dijiste:
Cita:
Las tres están relacionadas por el mismo USERID.
Y en realidad POSTS se relaciona con COMMENTS por el ID y COMMENTS con MEMBERS por el USERID.
Hay que ser bien específico con estas cosas.

Creo que con eso Huesos52 te completó la propuesta, que es bien eficiente...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 24/08/2010, 08:37
 
Fecha de Ingreso: septiembre-2004
Mensajes: 12
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: JOIN con tres tablas. perdido!

si, tienes toda razón, aun me confundo mucho.
Agradezco mucho a huesos, aunque es mi segundo día con el mysql...

encontré la solución:
Código:
SELECT P.title, C.msg, M.username
FROM   posts P
INNER JOIN comments C ON P.ID = C.UID
INNER JOIN members M ON C.USERID = M.USERID
WHERE P.ID = X

Última edición por fulgorek; 24/08/2010 a las 08:45 Razón: resuelto

Etiquetas: join, query
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:46.