Alăturați-vă în SQL

Această operație nu este necesară dintr-o înregistrare într-un tabel pentru a avea o înregistrare înregistrată. Înregistrarea este menținută în tabelul combinat, deși nu există nici o corespondență în cealaltă tabel.

Există trei tipuri de combinații externe, alăturat stânga, alăturați-vă și alăturați complet, unde toate înregistrările sunt luate Din tabelul din stânga sau toată tabelul drept sau toate înregistrările.

Joinditar

Venn Diagrama reprezentând răbdarea din stânga, între tabele A și B, a unei instrucțiuni SQL

Rezultatul acestei operațiuni conține întotdeauna toate înregistrările din tabelul din stânga (primul tabel menționat în interogare), indiferent dacă există o înregistrare corespunzătoare în tabelul din partea dreaptă.

Alăturați stânga declarația returnează perechea tuturor valorilor mesei stângi cu valorile mesei drepte corespunzătoare, dacă există sau returnați o valoare nulă nulă în câmpurile TA Dreapta blah atunci când nu există corespondență.

Spre deosebire de rezultatul prezentat în exemplele de combinație internă în care angajatul nu a fost prezentat al cărui departament nu exista, în exemplul următor, vor fi prezentate angajații cu departamentul lor respectiv și, în plus, un angajat al cărui departament nu există.

Angajatul care nu are un apartament este situat în zona galbenă a diagramei din dreapta, în timp ce angajații cu departamente se află în zona portocalie, la intersecția dintre A și B.

Exemplu de răsturnare stânga pentru combinația externă:

div>

 SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Rowspan = „2”> „2”> Angajat

33 33 33 33

34

iv id = „358bd1fd60”

iv id = „af4F40A501”

Departamentul
Prenume IdDepartamentul Nume idddepartment
33 33 33
Andrade 31 31
Róbinson 34
zolano 34
36 null
steinberg 33 Inginerie 33

Alăturați-vă, cu excepția intersecției

iv id = „6e75d394c1”

Diagrama Venn reprezentând răbdarea din stânga, între tabelele A și B, adăugând o condiție în care cheile B sunt nulate

dacă doriți să afișați numai înregistrările primei tabele care nu au corespunzător în al doilea, puteți adăuga starea n adecvat în clauza unde. Acest lucru ne va oferi angajaților care nu sunt repartizați la niciun departament, care în diagrama din dreapta sunt reprezentate în galben.

Div>

 SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE departamento.IDDepartamento IS NULL

th rowspan = „> s-au folosit angajatul

Departamentul
Prenume Iddepartment Nume idddepartment
Gaspar 36 Null

Drept exterior Alăturați-vă sau dreapta Joinditar

iv id = „71912F1539”

Diagrama Venn reprezentând legătura dreapta, între tabelele A și B, a unei instrucțiuni SQL

Această operație este o imagine reflectată a celei anterioare; Rezultatul acestei operațiuni conține întotdeauna toate înregistrările din tabelul din dreapta (al doilea tabel menționat în interogare), indiferent dacă există sau nu o înregistrare corespunzătoare în tabelul din stânga. Propoziție dreapta exterioară Returnează toate valorile mesei drepte cu valorile tabelului stâng corespunzător, dacă există sau returnați o valoare nulă nulă în câmpurile din tabelul din stânga când nu există corespondență.

În diagrama din dreapta, departamentele care nu au angajați sunt în zona verde, în timp ce departamentele angajaților se află în zona portocalie, la intersecția A și B.

Ejemplo de dreapta Alăturați-vă para la combinación iluminare:

 SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento

Empleado conținut> Departamento
Apellido conținut> IDDepartamento conținut> NombreDepartamento conținut> IDDepartamento conținut>
Zolano

34

PRODUCCIÓN

34

Jordan

33

Ingeniería

33

Robinson

34

PRODUCCIÓN

34

Steinberg

33

Ingeniería

33

Andrade

31

Ventas

31

peste peste

catalog Cadeo

35

En Este caso el Zonă de Mercadeo FUE presentada en los Resultados, aunque intensă sau Hay eMPLEADOS registrados en dicha Zona.

dreapta Alăturați-vă excluyendo la intersecciónEditar

Diagrama de Venn representando el pe dreapta Alăturați – vă, entre las Tablas a y B, agregando Una condición Donde las claves de pentru nulas

Si se quieren Mostrar los registros solo de la Departamento Tabla de que Tengan sau correspondientes en la Empleado de Tabla, este pUEDE agregar la adecuada condición en la clausula Unde. Nr doua esto que los Departamentos sau Tengan asignados ningún Empleado. En el diagrama de la Derecha, esto se reprezentantului en verde.

 SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE empleado.IDDepartamento IS NULL

Empleado conținut> Departamento conținuturi >
Apellido conținut> IDDepartamento conținut> NombreDepartamento conținut> IDDepartamento conținut>
peste peste

Mercadeo

35

Alăturați-equivalência entre stânga y dreapta JOINEditar

stânga Alăturați-vă equivalente al dreapta Alăturați-vă anterioară

fân una totală equivalência Entre las que USAN sentencias stânga Alăturați-y las que USAN Înscrie-te pe dreapta. Todo lo que se puede Hacer con uno se puede Hacer con El otro. Cambiando la Perspectiva Do es la Tabla Izquierda y auzit es la Tabla Derecha, y teniendo Cuidado con las condiciones, este PUEDE Hacer la POTRIVIT equivalente.

Por ejemplo, hagamos el dreapta Alăturați-vă anterior Pero Esta vez usando Stânga A te alatura. Dreptul Alăturați-en el anterioară este consideraba Empleado la la Izquierda Tabla y la Departamento de la Tabla Derecha. Para hacer ONU stânga Alăturați-vă equivalente cambiamos de y „volteamos Perspectiva” Tablas las. Consideremos Ahora la Departamento de la Tabla Izquierda y la Derecha de la Tabla Empleado. Podemos obtener exactamente el mismo resultado con la POTRIVIT Siguiente:

 SELECT * FROM departamento LEFT OUTER JOIN empleado ON departamento.IDDepartamento = empleado.IDDepartamento WHERE empleado.IDEmpleado IS NULL

Combinación completa (Full EXTERIOR Join) Editar

Diagrama de Venn representando el completa Alăturați-vă, entre las Tablas a y B, POTRIVIT una dintre SQL

Esta Operación preze los resultados de Izquierda Derecha Tabla Tabla y aunque sau Tengan correspondencia alguna en la Otra Tabla. La Tabla combinada contendrá, Entonces, todos los registros de Ambas Tablas y presentará Valores nulos NULLS para registros că Pareja.

En el Diagrama de la Derecha, el Zona anaranjada reprezentantului los EMPLEADOS que estan Asociados un ONU Departamento, Zona pentru Amarilla el los empleados que estan en ningún sau Departamento, y el pentru Zona Verde los que nici un Departamentos Tienen eMPLEADOS.

Ejemplo de combinación iluminare completa:

 SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento

Departamento conținut> Empleado
NombreDepartamento conținut> IDDepartamento conținut> Apellido conținut> IDDepartamento conținut>
Mercadeo

35

peste peste

Steinberg

33

Ingeniería

33

31

Empleado conținut> Departamento conținuturi >
Apellido conținut> IDDepartamento conținut> NombreDepartamento conținut> IDDepartamento conținut>
Zolano

34

PRODUCCIÓN

34

Jordan

33

Ingeniería

33

Robinson

34

PRODUCCIÓN

34

Gaspar

36

peste peste
Andrade

31

Ventas

peste peste

Mercadeo

35

Como se puede Notar, en Este caso se encuentra el Empleado Gaspar con valor nulo en su Zona correspondiente, y se muestra además el Departamento de Mercadeo con valor nulo en los empleados ESA Area.

Algunos Sistemas de baze de Datos sau soportan Esta funcionalidad, pero Esta pUEDE Ser emulada la Traves de combinaciones las de Tabla Izquierda, Tabla Derecha y de la POTRIVIT Union Union.

El mismo ejemplo pUEDE expresarse Asi:

 SELECT * FROM empleado LEFT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento UNION SELECT * FROM empleado RIGHT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento

completa Alăturați-vă excluyendo la intersecciónEditar

Diagrama de Venn representando el completa Alăturați – vă, entre las Tablas a y B, agregando condiciones Donde la alipit de o la B pentru nulas

E Ea este quieren Mostrar solo los registros de Tablas las que sau Tengan correspondencia en la Otra, este pueden agregar Las condiciones adecuadas en la clausula În cazul în care.

En el Diagrama de la Derecha, el Zona Amarilla reprezentantului los EMPLEADOS que sau estan asignados la ningún Departamento, mientras que el Zona verde reprezentantului los Departamentos que nicio empleados Tienen.

 SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE (empleado.IDDepartamento IS NULL) OR (departamento.IDDepartamento is NULL)

Empleado conținut>

Gaspar

36

peste peste
peste peste

Mercadeo

35

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *