Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/11/2011, 12:27
chispe
 
Fecha de Ingreso: agosto-2010
Mensajes: 31
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: No mostrar datos en la consulta

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola Chispe:

Si entendí correctamente qué es lo que quiere hacer sería obtener todos los proyectos en donde intervengan tanto el usuario 1 como el usuario 5, pero no solo uno de ellos correcto???

Checa este script:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE proyectos (idProyecto INT, descripcion VARCHAR(10));
  2. Query OK, 0 rows affected (0.11 sec)
  3.  
  4. mysql> INSERT INTO proyectos VALUES (1, 'uno'), (2, 'dos'), (3, 'tres'),
  5.     -> (4, 'cuatro'), (5, 'cinco');
  6. Query OK, 4 rows affected (0.06 sec)
  7. Records: 4  Duplicates: 0  Warnings: 0
  8. mysql> SELECT * FROM proyectos;
  9. +------------+-------------+
  10. | idProyecto | descripcion |
  11. +------------+-------------+
  12. |          1 | uno         |
  13. |          2 | dos         |
  14. |          3 | tres        |
  15. |          4 | cuatro      |
  16. |          5 | cinco       |
  17. +------------+-------------+
  18. 4 rows in set (0.00 sec)
  19.  
  20. mysql> CREATE TABLE proyecto_has_usuario (id INT,
  21.     -> Proyecto_idProyecto INT, Usuario_idUsuario INT);
  22. Query OK, 0 rows affected (0.12 sec)
  23.  
  24. mysql> INSERT INTO proyecto_has_usuario VALUES
  25.     -> (1, 1, 1),(2, 1, 5),(3, 2, 1),(4, 3, 5),
  26.     -> (5, 4, 1),(6, 4, 5),(7, 4, 6),(8, 5, 1),
  27.     -> (9, 5, 6),(10, 5, 7);
  28. Query OK, 10 rows affected (0.03 sec)
  29. Records: 10  Duplicates: 0  Warnings: 0
  30.  
  31. mysql> SELECT * FROM proyecto_has_usuario;
  32. +------+---------------------+-------------------+
  33. | id   | Proyecto_idProyecto | Usuario_idUsuario |
  34. +------+---------------------+-------------------+
  35. |    1 |                   1 |                 1 |
  36. |    2 |                   1 |                 5 |
  37. |    3 |                   2 |                 1 |
  38. |    4 |                   3 |                 5 |
  39. |    5 |                   4 |                 1 |
  40. |    6 |                   4 |                 5 |
  41. |    7 |                   4 |                 6 |
  42. |    8 |                   5 |                 1 |
  43. |    9 |                   5 |                 6 |
  44. |   10 |                   5 |                 7 |
  45. +------+---------------------+-------------------+
  46. 10 rows in set (0.00 sec)
  47.  
  48. mysql> SELECT Proyecto_idProyecto
  49.     -> FROM proyecto_has_usuario pu
  50.     -> WHERE pu.Usuario_idUsuario IN (1,5)
  51.     -> GROUP BY Proyecto_idProyecto
  52.     -> HAVING COUNT(*) >= 2;
  53. +---------------------+
  54. | Proyecto_idProyecto |
  55. +---------------------+
  56. |                   1 |
  57. |                   4 |
  58. +---------------------+
  59. 2 rows in set (0.00 sec)

Observa que en el proyecto 2 sólo participa el usuario 1, en el proyecto 3 sólo participa el usuario 5, en el proyecto 5 participa el usuario 1 y otros usuarios, pero no el usuario 5... sólo en los proyectos 1 y 4 participan ambos.

Saludos
Leo.
WOW gracias , por la respuesta tan completa, pero a lo mejor me explique mal , lo que pretendo realizar es , consultar si tanto el usuario 1 y el 5 (pueden ser hasta n usuarios) estan en el mismo proyecto , por ejemplo si no existe el 5 no me traiga ningun valor
independientemente si el valor 1 y el 2 existe

Código PHP:
[CODE]select from proyecto_has_usuario where Proyecto_idProyecto in (select idProyecto from proyecto) and Usuario_idUsuario in (select idUsuario from usuario where idUsuario in (1,2,3))[/CODE

De todos modos gracias

Última edición por chispe; 15/11/2011 a las 12:37