Resultados de la búsqueda: Common Table Expression

Usando CTE (Common Table Expression)

Deja un comentario

Una de las excelentes construcciones que tiene Firebird se llama CTE (Common Table Expression) porque nos facilita grandemente escribir consultas complejas. ¿Qué es CTE? Es una tabla virtual que se escribe antes del SELECT principal y que es eliminada cuando finaliza el SELECT principal. El SELECT principal puede referenciar a cualquier CTE como si fuera […]

Ejemplo de recursión (7). Números faltantes en una serie

2 comentarios

Si en una tabla o en una vista o en un procedimiento almacenado seleccionable, tenemos una columna numérica y queremos saber si están todos los números o si falta alguno, podemos usar la técnica mostrada en este artículo para averiguarlo. Para ello, mediante recursión crearemos una tabla virtual, que en nuestro ejemplo llamaremos RANGO_NUMEROS. Esa […]

Ejemplo de recursión (6). Repitiendo las filas

3 comentarios

Un usuario del foro hizo esta pregunta: «Tengo una tabla llamada ETIQUETAS con dos columnas: NOMBRES Y NUMERO_REPETICIONES y deseo que cada nombre se repita esa cantidad de veces». La idea es imprimir etiquetas con esos nombres. Solución: Primero, creamos la tabla ETIQUETAS Captura 1. Si haces clic en la imagen la verás más grande […]

Ejemplo de recursión (5). Saldos acumulados

4 comentarios

En el Ejemplo 4. de recursión ya habíamos visto como actualizar una fila y todas sus filas descendientes, ahora veremos otro ejemplo muy útil, el cual nos permitirá obtener los saldos acumulados de forma sencilla y rápida. Captura 1. La tabla CUENTAS contiene los datos que nos interesan CUE_IDENTI es el identificador de cada fila […]

Ejemplo de recursión (4). Actualizando filas recursivamente

3 comentarios

Así como podemos consultar filas de forma recursiva, también podemos actualizar esas filas recursivamente si es lo que necesitamos. Veamos un caso: Tenemos una tabla llamada CUENTAS que tiene estos datos: Captura 1. Si haces clic en la imagen la verás más grande En la columna CUE_IDENTI guardamos el identificador de cada fila; en la […]

Ejemplo de recursión (3). Fechas consecutivas

Deja un comentario

Ya hemos visto varios ejemplos de tablas virtuales recursivas, pero como es un tema que le interesa a mucha gente entonces ahora veremos otro ejemplo de lo que podemos hacer. Problema: Queremos ver todas las fechas desde hoy hasta los siguientes 10 días. Solución: Listado 1. Captura 1. Si haces clic en la imagen la […]

Ejemplo de recursión (2). Numerar filas

Deja un comentario

Aquí tenemos otro ejemplo de una tabla virtual recursiva. Este ejemplo es muy, muy sencillo, pero ilustra una técnica que podemos usar para numerar filas. Listado 1. Captura 2. Si haces clic en la imagen la verás más grande Como siempre, la primera fila no es recursiva, las filas recursivas son las que se encuentran […]

Ejemplo de recursión (1). Filas salteadas

Deja un comentario

En otros artículos ya habíamos visto como usar recursividad en los stored procedures y en los SELECTs del Firebird, así que ahora es tiempo de mostrar algunos ejemplos para que se entienda mejor lo que podemos hacer. Problema: Queremos mostrar las filas de nuestra tabla CUENTAS de 3 en 3, o sea las filas 1, […]

Entendiendo la recursividad en los SELECT

Deja un comentario

En un artículo anterior ya vimos un ejemplo de un SELECT recursivo, el cual fue muy útil, así que ahora explicaremos mejor como crear SELECTs recursivos. Se construye usando CTE (Common Table Expression) Un SELECT recursivo es una UNION entre miembros recursivos y no recursivos Debe tener al menos un miembro no recursivo al cual […]

Usando recursividad con CTE

9 comentarios

Una técnica muy poderosa aunque muy poco usada es la de la recursividad. ¿Qué significa recursividad? Que un código se ejecute y al finalizar se llame a sí mismo para volver a ejecutarse. Sin embargo, al volver a ejecutarse lo hace con algún parámetro cambiado y continúa llamándose a sí mismo hasta que se cumpla una […]

Older Entries