Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

No mostrar datos en la consulta

Estas en el tema de No mostrar datos en la consulta en el foro de Mysql en Foros del Web. Tengo una consulta, que que debe mostrar la informacion segun se ticken unos checkbox, pero si no existen los registros no me deberia mostrar nada. ...
  #1 (permalink)  
Antiguo 15/11/2011, 11:07
 
Fecha de Ingreso: agosto-2010
Mensajes: 31
Antigüedad: 13 años, 8 meses
Puntos: 0
No mostrar datos en la consulta

Tengo una consulta, que que debe mostrar la informacion segun se ticken unos checkbox, pero si no existen los registros no me deberia mostrar nada. En la actualidad intento con IN, en la consulta de abajo se aprecia (1,5) y me trae los datos del Usuario_idUsuario= "1" , pero no quiero que me traiga nada debido a que Usuario_idUsuario="5" esta vacio.
Código PHP:
select distinct(p.nombrefrom proyecto pproyecto_has_usuario pu
where 
p
.idProyecto=pu.Proyecto_idProyecto
and
pu.Usuario_idUsuario in (1,5
Saludos
  #2 (permalink)  
Antiguo 15/11/2011, 12:14
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: No mostrar datos en la consulta

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.
  #3 (permalink)  
Antiguo 15/11/2011, 12:27
 
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
  #4 (permalink)  
Antiguo 15/11/2011, 15:00
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: No mostrar datos en la consulta

y cual es el problema con la consulta??? La consulta que propongo hace exactamente eso...

Checa los datos, la consulta SÓLO REGRESA LOS REGISTOS 1 Y 4 que es aquellos donde participan los dos usuarios... 2, 3 y 5 no los muestra pues participan sólo alguno de ellos...

Si son más de 2 registros lo único que tienes que hacer es modificar el HAVING y dejarlo IGUAL AL NÚMERO DE USUARIOS}

Código MySQL:
Ver original
  1. mysql> SELECT Proyecto_idProyecto
  2.     -> FROM proyecto_has_usuario pu
  3.     -> WHERE pu.Usuario_idUsuario IN (1,6,7)
  4.     -> GROUP BY Proyecto_idProyecto
  5.     -> HAVING COUNT(*) >= 3;
  6. +---------------------+
  7. | Proyecto_idProyecto |
  8. +---------------------+
  9. |                   5 |
  10. +---------------------+
  11. 1 row in set (0.06 sec)

¿Te tomaste realmente un tiempo para analizar el script?

Saludos
Leo.
  #5 (permalink)  
Antiguo 18/11/2011, 12:35
 
Fecha de Ingreso: agosto-2010
Mensajes: 31
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: No mostrar datos en la consulta

Gracias , funciono a la perfeccion , no habia tenido tiempo para revisarlo bn...

saludos

Etiquetas: registros, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:20.