Recapitulare: Expresii de tabel comune (CTE)

Interogări ierarhice și recursive în SQL Server

Jasmin Ludolf

Content Developer

Structura cursului

  • Ce este recursivitatea și cum se utilizează?
  • Cum se pot folosi expresiile de tabel comune (CTE) pentru interogări ierarhice și recursive?
  • Cum se poate reprezenta ierarhia în SQL și cum se interoghează?
  • Exemple din lumea reală (ex. organigrame, liste de materiale, planuri de zbor)

Imagine cu păpuși rusești și proprietatea lor recursivă.

Interogări ierarhice și recursive în SQL Server

Ce este un CTE?

  • Definiția unui CTE

Specifică un set de rezultate temporar cu nume, cunoscut ca expresie de tabel comună (CTE). Acesta este derivat dintr-o interogare simplă și definit în contextul de execuție al unui singur enunț

  • Structura unui CTE
WITH CTEtable as 
(
    -- a query --
)

SELECT * FROM CTEtable
Interogări ierarhice și recursive în SQL Server

Utilizarea CTE-urilor

  • Gestionarea interogărilor complexe
  • Utilizabil în instrucțiuni SELECT, INSERT, UPDATE sau DELETE
  • Mai multe CTE-uri pot fi definite într-un singur enunț WITH
  • Combinarea mai multor CTE-uri cu UNION sau JOIN
  • Substituent pentru o vizualizare
  • Auto-referențierea unui tabel
  • Interogare recursivă
Interogări ierarhice și recursive în SQL Server

Definirea unui CTE pentru o organizație IT

Selectarea managerilor cu un CTE:

WITH JOBS (id, SurName, JobTitle) AS

( SELECT ID, Name, Position FROM employee WHERE Position like '%Manager%' ),
  • WITH AS pentru a defini CTE-ul
  • SELECT pe tabelul Employee
Interogări ierarhice și recursive în SQL Server

Definirea unui CTE pentru o organizație IT

Selectarea angajaților cu salariu peste 10.000

SALARIES (ID,Salary) AS (
   SELECT
        ID,
        Salary
   FROM ITSalary
   WHERE Salary > 10000)
Interogări ierarhice și recursive în SQL Server

Definirea unui CTE pentru o organizație IT

Interogarea completă:

WITH JOBS (id, SurName, JobTitle) AS 
(    SELECT ID, Name, Position
        FROM employee 
        WHERE Position like '%Manager%'),

SALARIES (ID,Salary) AS ( SELECT ID, Salary FROM ITSalary WHERE Salary > 10000)
SELECT JOBS.Name, JOBS.Position, SALARIES.Salary FROM JOBS INNER JOIN SALARIES on JOBS.ID = SALARIES.ID;
SurNmames     | JobTitle          | Salary
Paul Smith    | IT Manager        | 15,000
Adam Peterson | Sourcing Manager  | 12,500
Anna Nilson   | Portfolio Manager | 10,500
Interogări ierarhice și recursive în SQL Server

Să exersăm!

Interogări ierarhice și recursive în SQL Server

Preparing Video For Download...