Din seria “Microsoft SQL Server 2005 in actiune”
Astazi episodul nr. 4 :
"Arborii si cowboy-ii"
O productie “Admindate & Inf, www.diadmin.ro” , 2006
Scenariul si regia Gheorghe Ciubuc
Personaje principale:
Alejandro Morientes – DBA in firma “Los capshunares” cu activitati principale in agricultura, undeva in Spania, langa Madrid, anul de gratie 2006.
Pedro Garcia – patronul firmei, 50 de ani .
Maria-Elena Adochitei – romanca,bunaciunea nr. 1 nascuta la Vaslui, aici printre capsuni.
Miguel Morales – unu din managementul firmei si actionar al ei.
Consuela Cervantes – bunaciunea nr. 2, secretara dl. Pedro Garcia.
Pedro Garcia(cu telefonul in mana)”Alejandro, vino pana la mine in birou”
Alejandro Morientes(baiguind)” Da, Sefu’, imediat”
Alejandro urca cu inima cat un purice pana la biroul sefului de la etajul 1 care este langa secretariat.
Consuela:”Alejandro, mi amor, ce-i cu tine…”
Alejandro:”Uite ma cheama seful, ce o avea cu mine, nu cumva…”
Consuela:”Stai draga linistit, probleme cu Uniunea Europeana, acu’ ca o sa-i bage si pe romani si pe bulgari…”
Alejandro(bagand capul pe usa): “Traiti’ Sefu ”
Pedro Garcia:”Ce-i ma cu tine? “(Alejandro se albi ca varul)”te-am chemat de o juma’ de ora !”
Alejandro(sufland usurat):”Sefu, a trebuit sa downloadez….”
Pedro Garcia:”Bine, bine. Uite care-i problema : vreau sa mi se prezinte o situatie in care sa vad sefii cu subalternii pe ferme, sa stiu si eu care-i sef si care grajdar. Noi avem toti oamenii bagati in calculator, nu?
Alejandro:”Da, sefu, ma gandesc…”
Pedro Garcia:”Pai munceste nu gandeste!”
Alejandro(ranjind cu subinteles):”Sigur, facem si d’astea.Sefu, ma duc pe jos sa pregatesc. Cred ca o sa folosesc CTE-uri”.
Pedro Garcia:”Cu ce vrei numai sa rezolvi!”
Dupa un timp Alejandro, prezenta situatia sefului. Iata cum a facut:
Datele sunt inregistrate in baza de date astfel
ID(cod angajat) Nume (Nume angajat) IDM(Codul sefului acestui angajat)
(Primele randuri arata astfel)
12123 Pedro Garcia Null
23411 Miguel Morales 12123
….
(Null inseamna ca Pedro Garcia nu are sef – e normal, doar e patronul!)
Mai departe, foloseste common table expression (CTE)- o structura care permite cautari recursive pe aceasi tabela
USE Ferma;
GO
WITH Ierarhie (IDM, ID, Nume, Nivel)
-- “Ierarhie” este numele structurii
AS
(
-- Definesc inceputul ierarhiei(de unde se pleaca, radacina)
SELECT IDM,ID,Nume,0 as Nivel
from dbo.emp
WHERE IDM IS NULL
UNION ALL
-- Definesc recursivitatea
SELECT e.IDM, e.ID, e.Nume,Nivel + 1
FROM dbo.emp AS e
INNER JOIN Ierarhie AS d
-- astfel scot angajatii care au sef(e.IDM) exact codul managerului selectat(d.ID)
ON e.IDM = d.ID
)
-- Instructiunea care executa CTE-ul(Common Table BLOCKED EXPRESSION
SELECT IDM as CodSef, ID as CodAngajat, Nume as NumeAngajat, Nivel
FROM Ierarhie
GO
SFARSIT
Regia ………………………………………………………………..Ciubuc Gheorghe
Scenariul(dupa un document Microsoft)……………………....………Ciubuc Gheorghe
Producator………………………………………………………….. Ciubuc Gheorghe
O productie Admindate & Inf, www.diadmin.ro”
Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)