Looking for sql Keywords? Try Ask4Keywords

SQL ÚNETE COMPLETO


Ejemplo

Un tipo de JOIN que es menos conocido, es el FULL JOIN.
(Nota: MySQL no admite FULL JOIN a partir de 2016)

Un FULL OUTER JOIN devuelve todas las filas de la tabla izquierda y todas las filas de la tabla derecha.

Si hay filas en la tabla de la izquierda que no tienen coincidencias en la tabla de la derecha, o si hay filas en la tabla de la derecha que no tienen coincidencias en la tabla de la izquierda, esas filas también aparecerán en la lista.

Ejemplo 1 :

SELECT * FROM Table1

FULL JOIN Table2 
     ON 1 = 2 

Ejemplo 2:

SELECT 
     COALESCE(T_Budget.Year, tYear.Year) AS RPT_BudgetInYear 
    ,COALESCE(T_Budget.Value, 0.0) AS RPT_Value 
FROM T_Budget 

FULL JOIN tfu_RPT_All_CreateYearInterval(@budget_year_from, @budget_year_to) AS tYear 
      ON tYear.Year = T_Budget.Year 

Tenga en cuenta que si está utilizando eliminaciones de software, tendrá que comprobar el estado de eliminación de software de nuevo en la cláusula WHERE (porque FULL JOIN se comporta como una UNION);
Es fácil pasar por alto este pequeño hecho, ya que se coloca AP_SoftDeleteStatus = 1 en la cláusula de unión.

Además, si está realizando una UNIÓN COMPLETA, normalmente deberá permitir NULL en la cláusula WHERE; olvidarse de permitir NULL en un valor tendrá los mismos efectos que una combinación INNER, que es algo que no desea si está realizando una UNIÓN COMPLETA.

Ejemplo:

SELECT 
     T_AccountPlan.AP_UID
    ,T_AccountPlan.AP_Code
    ,T_AccountPlan.AP_Lang_EN
    ,T_BudgetPositions.BUP_Budget
    ,T_BudgetPositions.BUP_UID 
    ,T_BudgetPositions.BUP_Jahr
FROM T_BudgetPositions    

FULL JOIN T_AccountPlan
    ON T_AccountPlan.AP_UID = T_BudgetPositions.BUP_AP_UID 
    AND T_AccountPlan.AP_SoftDeleteStatus = 1 

WHERE (1=1) 
AND (T_BudgetPositions.BUP_SoftDeleteStatus = 1 OR T_BudgetPositions.BUP_SoftDeleteStatus IS NULL) 
AND (T_AccountPlan.AP_SoftDeleteStatus = 1 OR T_AccountPlan.AP_SoftDeleteStatus IS NULL)