Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/10/2013, 09:21
benj4
 
Fecha de Ingreso: octubre-2013
Mensajes: 1
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Comparar si existe un registro en comun para varios datos recibidos por ar

llegue a tu tema buscando casi lo mismo, y ya e que el post tiene mil años pero alomejor a alguien le sirve, porque la verdad no encontre informacion por niun lado.

poniendo de supuesto la sig tabla

Código:
room_id  user_id  
-------  ---------
      1          2
      1          4
      2          1
      2          4
      1          5
para saber el id de la sala de los usuarios 1 y 4:

Código:
SELECT ur1.room_id FROM user_has_room ur1
INNER JOIN user_has_room ur2 ON ur1.room_id = ur2.room_id
WHERE ur1.user_id = 1 AND ur2.user_id = 4
-- WHERE ur1.user_id = 4 AND ur2.user_id = 1 -- funciona de cualquier orden
GROUP BY ur1.room_id
HAVING (SELECT COUNT(1) AS room_count1 FROM user_has_room WHERE room_id = ur1.room_id) = 2;
para mas usuarios se agrega un JOIN por cada usuario, un AND en el where y la cantidad en el HAVING del final

Código:
SELECT ur1.room_id FROM user_has_room ur1
INNER JOIN user_has_room ur2 ON ur1.room_id = ur2.room_id
INNER JOIN user_has_room ur3 ON ur1.room_id = ur3.room_id
WHERE ur1.user_id = 4 AND ur2.user_id = 5 AND ur3.user_id = 2
GROUP BY ur1.room_id
HAVING (SELECT COUNT(1) AS room_count1 FROM user_has_room WHERE room_id = ur1.room_id) = 3
obiamente con una combinacion que no corresponda no devolvera resultados.

es la unica forma en la que se me ocurrio solucionarlo, se que es algo complejo pero funciona

saludos