Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: mark182 en 24 Mayo 2011, 21:42 pm



Título: Consulta sql, 1 key a varios registros
Publicado por: mark182 en 24 Mayo 2011, 21:42 pm
Buenas, como esta?

Estoy haciendo un sistema de post en los que se pueden dejar varios comentarios, y mi problema es que no se que consultar hacer para el siguiente caso:

Yo tengo dos tablas "posts" y "comentarios". Donde sus key son id_post y id_comentario.

(pongo los campos que intervienen en el problema nada mas)

Posts:                          Comentarios:

|--id_post--|                |-----id_comentario-----|
                                  |--id_post_comentado--|

Un post puede tener varios comentarios o sea, en la tabla Comentarios puede haber varios registros con el mismo id_post_comentario.

Como seria la consulta para traer todos los comenarios pertenecientes a un post?
Es correcto como arme las tablas?

Muchas gracias.


Título: Re: Consulta sql, 1 key a varios registros
Publicado por: Shell Root en 25 Mayo 2011, 00:15 am
Sí esta relacionada, puedes hacer un INNER JOIN, por ejemplo.

Si tenemos la siguiente estructura de tabla para POST y COMENTARIO.
Código
  1. mysql> SELECT * FROM tblComentario;
  2. +----+--------------+--------------+
  3. | id | idComentario | comentario   |
  4. +----+--------------+--------------+
  5. |  1 |            1 | Comentario 1 |
  6. |  2 |            1 | Comentario 2 |
  7. |  3 |            2 | Comentario 1 |
  8. |  4 |            3 | Comentario 1 |
  9. |  5 |            3 | Comentario 2 |
  10. |  6 |            3 | Comentario 3 |
  11. +----+--------------+--------------+
  12. 6 ROWS IN SET (0.00 sec)
  13.  
  14. mysql> SELECT * FROM tblPost;
  15. +----+--------+--------------+
  16. | id | idPost | idComentario |
  17. +----+--------+--------------+
  18. |  1 |      1 |            2 |
  19. |  2 |      2 |            1 |
  20. |  3 |      3 |            3 |
  21. +----+--------+--------------+
  22. 3 ROWS IN SET (0.00 sec)

Realizamos el INNER JOIN y quedará así,
Código
  1.    SELECT tblPost.idPost, tblComentario.idComentario, tblComentario.comentario
  2.      FROM tblPost
  3. INNER JOIN tblComentario
  4.        ON tblPost.idComentario = tblComentario.idComentario
  5.     WHERE tblPost.idPost = 2;
El resultado sería,
Código
  1. +--------+--------------+--------------+
  2. | idPost | idComentario | comentario   |
  3. +--------+--------------+--------------+
  4. |      2 |            1 | Comentario 1 |
  5. |      2 |            1 | Comentario 2 |
  6. +--------+--------------+--------------+
  7. 2 ROWS IN SET (0.00 sec)