Consulta sql, 1 key a varios registros

Iniciado por mark182, 24 Mayo 2011, 21:42 PM

0 Miembros y 1 Visitante están viendo este tema.

mark182

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.

Shell Root

Sí esta relacionada, puedes hacer un INNER JOIN, por ejemplo.

Si tenemos la siguiente estructura de tabla para POST y COMENTARIO.
Código (sql) [Seleccionar]
mysql> SELECT * FROM tblComentario;
+----+--------------+--------------+
| id | idComentario | comentario   |
+----+--------------+--------------+
|  1 |            1 | Comentario 1 |
|  2 |            1 | Comentario 2 |
|  3 |            2 | Comentario 1 |
|  4 |            3 | Comentario 1 |
|  5 |            3 | Comentario 2 |
|  6 |            3 | Comentario 3 |
+----+--------------+--------------+
6 rows in set (0.00 sec)

mysql> SELECT * FROM tblPost;
+----+--------+--------------+
| id | idPost | idComentario |
+----+--------+--------------+
|  1 |      1 |            2 |
|  2 |      2 |            1 |
|  3 |      3 |            3 |
+----+--------+--------------+
3 rows in set (0.00 sec)


Realizamos el INNER JOIN y quedará así,
Código (sql) [Seleccionar]
   SELECT tblPost.idPost, tblComentario.idComentario, tblComentario.comentario
     FROM tblPost
INNER JOIN tblComentario
       ON tblPost.idComentario = tblComentario.idComentario
    WHERE tblPost.idPost = 2;

El resultado sería,
Código (sql) [Seleccionar]
+--------+--------------+--------------+
| idPost | idComentario | comentario   |
+--------+--------------+--------------+
|      2 |            1 | Comentario 1 |
|      2 |            1 | Comentario 2 |
+--------+--------------+--------------+
2 rows in set (0.00 sec)
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.