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

posible consulta vacia

Estas en el tema de posible consulta vacia en el foro de Mysql en Foros del Web. hola! me gustaría hacer una consulta a mi bd, de la que extraigo una serie de datos independientes, de esos datos algunos campos pueden dar ...
  #1 (permalink)  
Antiguo 20/04/2011, 08:50
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 8 meses
Puntos: 17
posible consulta vacia

hola! me gustaría hacer una consulta a mi bd, de la que extraigo una serie de datos independientes, de esos datos algunos campos pueden dar o no resultados, el problema es qeu cuando no me da resultado, toda la consulta es vacía. ¿Cómo puedo solucionarlo? supongo algo tipo EXISTS, pero no logro dar con la respuesta:

Código:
SELECT u.usuarioID, m.multa FROM usuarios u, multas m  WHERE
(u.tarjeta = 456456456 AND (m.multasID = (SELECT MAX(m.multasID)from multas 
WHERE u.usuario = m.usuario))))
El tema está que m.multa puede ser nulo, entonces me devolvería "Empty set", y yo quiero un [usuario, 0]

Eso se puede hacer??

Gracias!

Última edición por cucuru; 20/04/2011 a las 09:07
  #2 (permalink)  
Antiguo 20/04/2011, 11:24
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: posible consulta vacia

Hola cucuru:

Para este tipo de consultas es necesario utilizar LEFT JOIN, lamentablemente no das mucha información acerca de la estructura de sus tablas o algunos datos de ejemplo, así es que tratando de adivinar qué es lo que quiere hacer arme un pequeño ejemplo de cómo se usaría el LEFT JOIN en este caso:

Código MySQL:
Ver original
  1. mysql> create table usuarios (usuarioID int, nombre varchar(20));
  2. Query OK, 0 rows affected (0.08 sec)
  3.  
  4. mysql> insert into usuarios values (1, 'uno'), (2, 'dos'), (3, 'tres');
  5. Query OK, 3 rows affected (0.05 sec)
  6. Records: 3  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> select * from usuarios;
  9. +-----------+--------+
  10. | usuarioID | nombre |
  11. +-----------+--------+
  12. |         1 | uno    |
  13. |         2 | dos    |
  14. |         3 | tres   |
  15. +-----------+--------+
  16. 3 rows in set (0.02 sec)
  17.  
  18. mysql> create table multas (multasID int, usuarioID int, descripcion varchar(20));
  19. Query OK, 0 rows affected (0.06 sec)
  20.  
  21. mysql> insert into multas values (1, 1, 'exceso velocidad'),
  22.     -> (2, 1, 'semáforo en rojo'),
  23.     -> (3, 2, 'mal estacionado');
  24. Query OK, 3 rows affected (0.03 sec)
  25. Records: 3  Duplicates: 0  Warnings: 0
  26.  
  27. mysql> select * from multas;
  28. +----------+-----------+------------------+
  29. | multasID | usuarioID | descripcion      |
  30. +----------+-----------+------------------+
  31. |        1 |         1 | exceso velocidad |
  32. |        2 |         1 | semáforo en rojo |
  33. |        3 |         2 | mal estacionado  |
  34. +----------+-----------+------------------+
  35. 3 rows in set (0.00 sec)
  36.  
  37. mysql> select u.nombre, M3.descripcion from usuarios u left join
  38.     -> (
  39.     -> select M1.* from multas M1
  40.     -> inner join
  41.     -> (select usuarioID, max(multasID) maxMultasID from multas
  42.     -> group by usuario ID)
  43.     -> M2 on M1.multasid = M2.maxMultasID
  44.     -> ) M3 on u.usuarioID = M3.usuarioID;
  45. +--------+------------------+
  46. | nombre | descripcion      |
  47. +--------+------------------+
  48. | uno    | semáforo en rojo |
  49. | dos    | mal estacionado  |
  50. | tres   | NULL             |
  51. +--------+------------------+
  52. 3 rows in set (0.02 sec)

Como podrás observar el usuario uno (1) tiene dos multas, la consulta te regresa la que tiene el máximo id. El usuario tres no tiene ninguna multa, por lo que la descripción de la multa aparece como NULL.

Te repito, estoy adivinando lo que quieres hacer con la información que proporcionaste, si el código no te sirve te pido que nos expliques un poco mejor qué es lo que quieres hacer, que nos digas la estructura de tus tablas y nos pongas algunos datos de ejemplo. Entre más información nos puedas dar más fácil será tratar de ayudar.

Saludos
Leo.
  #3 (permalink)  
Antiguo 20/04/2011, 13:15
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 8 meses
Puntos: 17
Respuesta: posible consulta vacia

Gracias leo!! justo lo que quería!

no he puesto más información por evitar que ante una estructura grande (mi base de datos es gigantesca, y en realidad son unas 10 consultas en lugar de sólo 2) nadie intentase entenderlo...

Muchas gracias!!

Etiquetas: posible, vacias
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 22:51.