¿Cómo puedo seleccionar varias filas de una tabla usando un rango de valores en la cláusula WHERE?

Esta pregunta es cómo seleccionar varias filas de una tabla usando un rango de valores en la cláusula WHERE. Esto es lo que estoy tratando de hacer.

Tengo una aplicación de comentarios en la que publicas un comentario y tus amigos pueden responderlo, algo así como el muro de Facebook. Y en la misma aplicación permito que cada miembro sea amigo entre sí.

Mi desafío ahora es que, en lugar de solo mostrar los comentarios del propietario, quiero mostrar también a sus amigos. Quiero una funcionalidad similar a la del muro de Facebook.
Así que aquí está lo que tengo:

    Friends Table                           Commenting Table
 _______________________        ___________________________________________
| member_id | friend_id |      | member_id |           comment             |
 -----------------------        -------------------------------------------
|    10     |    14     |      |    10     |      Hello member # 14        |
|    14     |    10     |      |    14     |      hey how are you          |
|    17     |    9      |      |    17     |      Hello world              |
|    17     |    10     |      |    10     |      Hello                    |
 ------------------------       --------------------------------------------

así que el miembro 10 es amigo de los miembros 14 y 17. Y en lugar de solo mostrar los comentarios del miembro 10, quiero mostrar los comentarios de los miembros 10, 14 y 17. Así:

        Member Comments                          All Member Comments
 _______________________________        ___________________________________________
| member_id |      comment      |      | member_id |           comment             |
 -------------------------------        -------------------------------------------
|    10     | Hello member # 14 |      |    10     |      Hello member #           |
|    10     |       Hello       |      |    14     |      hey how are you          |
---------------------------------      |    17     |      Hello world              |
                                       |    10     |      Hello                    |
                                       --------------------------------------------

Así que estaba probando mysql_query ("SELECCIONAR comentarios Commenting Table DÓNDE member_id = '10' ORDER BY member_id DESC") y hacer un montón de bucles while pero eso no es muy eficiente. ¿Hay alguna otra forma de seleccionar los comentarios usando múltiples valores?

preguntado el 12 de junio de 12 a las 20:06

2 Respuestas

Puede unirse a las mesas por la identificación del amigo y la identificación del miembro y luego agrupar por la identificación del miembro:

SELECT f.member_id AS user, c.member_id AS commentBy, c.comment AS comment
FROM commentingTable AS c, friendsTable AS f
WHERE c.member_id = f.member_id 
  OR c.member_id = f.friend_id
GROUP BY f.member_id

Respondido el 12 de junio de 12 a las 20:06

y esto seleccionará todos los comentarios? - lomas09

No, lo siento, tienes razón. Lo que tienes que hacer es filtrar por el f.member_id en lugar de la agrupación. - Claas Wilke

Entonces, ¿es esto lo que hace Facebook? ¿O cómo ponen todos los comentarios recientes de tus amigos en tu muro? - lomas09

SELECT *
FROM `Commenting Table`
WHERE member_id=10
OR member id IN (
  SELECT friend_id FROM `Friends Table` WHERE member_id=10
-- Uncomment the following if your Friends Table is asymetrical
--  UNION
--  SELECT member_id FROM `Friends Table` WHERE friend_id=10
)

Respondido el 12 de junio de 12 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.