Machetes Varios

apuntes varios erp cwa logic ( ahora SoftLand Logic ) – sql y veremos que otra cosa

Recursividad en SQL 2005


muy buen artículo.

Dada una tabla con el id de empleado, su nombre y el id del jefe ( teniendo el gerente el mismo id de empleado que de jefe ) se necesita saber cuantas personas reportan a un jefe en particular.

Se da la solución usando Common Table Expression ( CTE ), y luego se eejmplifica la falla al intentar consultar la gente que reporta al gerente ( en el gráfico Alice, pero el autor se equivoca y dice que es Carol ).

The SELECT statement after the UNION ALL phrase is recursively executed until it produces no rows. In a CTE a SELECT statement that JOINs the CTE always JOINs with the rows produced by the previously executed SELECT statement.

La parte recursiva ( The SELECT statement after the UNION ALL phrase) siempre se liga (JOIN) con los registros obtenidos en la ejecución anterior, hasta no obtener más registros. Si ésto no ocurre se produce un Loop infinito parado por el valor MAXRECURSION ( que viene por defecto en 100 )

Hay que tener en cuenta los siguientes errores para no confundirse

1) Debe decir Alice ( y no Carol

” …

The CTE we have been examining has a flaw in it, and it is potential flaw in any CTE — it will fail if we ask it to find the number of people who report to the big boss, Carol. The figure below shows the result of running the CTE where the big boss’s ID is used to initialize it. …”

2) Luego, para prevenir un Loop infinito se indica:

“.. and boss <> 12 ..”

debe decir: and id <> 12 ( como en la función )

mayo 27, 2008 - Posted by | Transact SQL

1 comentario »

  1. loco un ejemplo , porque no entendí

    Comentario por Lucho | junio 10, 2010 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: