post icon

SubQuery SQL: cláusula FROM

Los SubQuery’s o SubConsultas son herramientas poderosas si las sabemos usar, y son básicamente consultas anidadas en otras consultas la cual devuelve un conjunto de valores. Prácticamente un SubQuery puede ser utilizado en cualquier expresión y cláusula ya sean SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY.

Como el tema de los SubQuery es bastante largo lo iré partiendo en pedazos agrupados por expresión (recomendación de Juan Cuevas), como lo ven en el título ahora veremos los SubQuerys aplicados en la cláusula FROM.

Ya sabemos que la cláusula FROM sirve para identificar las tablas de donde serán proveídos los datos a retornarse, como un SubQuery retorna un conjunto de valores también puede ser utilizado aquí como una tabla más.

Veamos un ejemplo práctico para esto. Supongamos que tenemos un negocio de cablevisión y mensualmente cobramos a nuestros clientes, en cierto momento necesitamos un listado de último pago de todos nuestros clientes, los datos en bruto lo tenemos de esta manera:

fecha_pago id_cliente monto
2010/03/24 1 50$
2010/04/25 1 54$
2010/03/24 2 76$
2010/04/23 2 76$

Y lo que necesitamos mostrar es esto básicamente:

fecha_pago id_cliente monto
2010/04/25 1 54$
2010/04/23 2 76$

A la mente rápidamente me vienen 2 maneras de resolver esto, la primera utilizando un cursor – pero ya conocen mi posición ante el uso de ellos, lo llamo destrozador de servidores – por ello la segunda manera más optima es utilizando SubQuerys en la cláusula FROM, fijense:

1
2
3
4
5
6
7
8
9
10
11
select 
	c.fecha_pago,
	c.id_cliente,
	c.monto
from 
	cobros c
inner join (select id_cliente, max(fecha_pago) as fecha_pago from cobros group by id_cliente) as sq
        on c.idpersona = sq.id_cliente 
        and c.fecha_pago = sq.fecha_pago
order by 
       2 asc

Comentarios desde Facebook:

Trackbacks/Pingbacks

  1. Tweets that mention SubQuery SQL: clausula FROM | DevTroce.com -- Topsy.com UNITED STATES - 16 Agosto 2010

    […] This post was mentioned on Twitter by Ronald Riveros, DevTroce. DevTroce said: SubQuery #SQL: cláusula FROM: Los SubQuery’s o SubConsultas son herramientas poderosas si las… http://goo.gl/fb/0ts3y […]

Responder