[Php-avanzado] Consulta MySQL y entrega

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Sab Feb 22 20:24:08 ART 2014


Hola Pehúen,

El sáb, 22-02-2014 a las 20:09 -0300, Fernando Pehuén Borsani escribió:
> Hola Profe! Primero la buena noticia: tengo casi terminado el proyecto,
> aunque por haberlo desarrollado en un mes hay cosas que no están "lindas"
> (como la forma de mostrar los errores).

	No pasa nada: es de lo más normal que las entregas en fecha tengan
algún detalle sin terminar.

> Ahora lo no tan bueno: las preguntas.
> 
> 1) si tengo una consulta de este tipo:
> 
> SELECT 
>     libros.titulo, 
>     (SELECT COUNT(unidades.idUnidad) FROM unidades WHERE unidades.idLibro =
> libros.idLibro) as totales,
>     (SELECT COUNT(unidades.idUnidad) FROM unidades WHERE unidades.idLibro =
> libros.idLibro) - (SELECT COUNT(prestamos.idLibro) FROM prestamos WHERE
> prestamos.idEstadoP = '1' AND prestamos.idLibro = libros.idLibro) as libres
> FROM libros

	Ohhh! Y no hay como reformular esa query sin tantas subquerys???
	La primera se puede sacar seguro y ser reemplazada por un simple COUNT
y pasar las condiciones del WHERE al final, agregándole un GROUP BY.
	Las siguientes, si no veo mal, se pueden reemplazar por una sola
subquery para saber cuantos tienen idEstado = 1.

> Hay alguna forma de hacer algo asi: 
> 
> SELECT (subconsulta) as total, (subconsulta) as ocupado, total - ocupado as
> disponibles FROM tabla
> 
> Porque al menos escrito así no funciona. Y es una pena ejecutar dos veces
> una de las subconsultas.

	No se puede. El valor de la subquery no queda guardado para ser usado
de nuevo sin ser calculado. Sin embargo, no es una pena, porque el
optimizador de querys en realidad no la va a volver a ejecutar, sino que
va a usar el resultado cacheado.

> 2) Si para el martes tengo terminado el sistema, ¿puedo ir y probarlo en la
> facultad?

	Sí.

> ¿Voy a poder acceder a las aulas?

	Supongo que sí... no sé si hay algún curso, pero al menos las veces que
fuimos estos días el Aula 1 estaba siempre abierta.

>  ¿Sigue existiendo mi cuenta en el
> servidor?

	Supongo que sí... al menos las de los demás estaban.

>  ¿Está creada la cuenta en phpMyAdmin (porque durante la cursada no
> lo estaba)?

	Ni idea. Cualquier cosa, podrías usar sin temor la cuenta de algún
otro: casi nadie cambia las claves y son el nombre y la inicial del
apellido, al igual que el usuario.

> Pregunto estas cosas porque las tres fechas anteriores no pude ir por
> razones físicas (o sea, porque no existe el teletransporte de humanos cuac)
> y me preocupa ir el jueves 27 y encontrarme justo ahí con algo inesperado.

	Igual, si lo que encontrás fuera algo inesperado, veríamos como
resolverlo.

> Desde ya gracias por las respuestas.

	Por nada!

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado