Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/01/2013, 16:41
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta agrupar por ID

Hola kirianky:

No termino de entender cómo tienes organizada tu información... creo que debiste de haber comenzado por ahi, pero tratando de jugar al adivino, creo que tendrías algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM instalacion;
  2. +----------------+----------+
  3. | id_instalacion | cantidad |
  4. +----------------+----------+
  5. |              1 |       10 |
  6. |              2 |        8 |
  7. |              3 |        7 |
  8. |              4 |        5 |
  9. +----------------+----------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT * FROM reservas;
  13. +----------------+---------------+--------------+
  14. | id_instalacion | fecha_entrada | fecha_salida |
  15. +----------------+---------------+--------------+
  16. |              1 | 2013-01-25    | 2013-01-25   |
  17. |              1 | 2013-01-25    | 2013-01-25   |
  18. |              2 | 2013-01-25    | 2013-01-25   |
  19. |              2 | 2013-01-25    | 2013-01-25   |
  20. |              3 | 2013-01-25    | 2013-01-25   |
  21. |              3 | 2013-01-25    | 2013-01-25   |
  22. |              3 | 2013-01-25    | 2013-01-25   |
  23. +----------------+---------------+--------------+
  24. 7 rows in set (0.00 sec)

Suponiendo que en tu tabla de instalaciones tengas sólo una entrada para cada id_instalación, y en tu tabla reservas tienes que contar primero, entonces podrías hacerlo asi:

Código MySQL:
Ver original
  1. mysql> SELECT T1.id_instalacion,
  2.     -> T1.cantidad - IFNULL(T2.reservadas, 0) disponibles
  3.     -> FROM instalacion T1 LEFT JOIN
  4.     -> ( SELECT id_instalacion, COUNT(id_instalacion) reservadas
  5.     ->   FROM reservas
  6.     ->   WHERE fecha_entrada BETWEEN '2013-01-25' AND '2013-01-27' OR
  7.     ->         fecha_salida BETWEEN '2013-01-25' AND '2013-01-27'
  8.     ->   GROUP BY id_instalacion) T2 ON T1.id_instalacion = T2.id_instalacion;
  9. +----------------+-------------+
  10. | id_instalacion | disponibles |
  11. +----------------+-------------+
  12. |              1 |           8 |
  13. |              2 |           6 |
  14. |              3 |           4 |
  15. |              4 |           5 |
  16. +----------------+-------------+
  17. 4 rows in set (0.00 sec)

Dale un vistazo y si continuas con problemas lo comentas en el foro

Saludos
Leo.