sql >> Base de Datos >  >> RDS >> Mysql

(My)SQL unión completa con tres tablas

Que yo sepa, no hay una combinación externa completa en MySql. Entonces, para hacer lo que necesita, debe obtener ID distintos en la tabla derivada y unir a la izquierda las tablas originales:

select ids.id,
       ifnull(table1.A, 0) A,
       ifnull(table2.B, 0) B,
       ifnull(table3.C, 0) C,
       ifnull(table1.A, 0) + ifnull(table2.B, 0) - ifnull(table3.C, 0) R
  from 
  (
    select id
      from table1
    union
    select id
      from table2
    union
    select id
      from table3
  ) ids
  left join table1
    on ids.id = table1.id
  left join table2
    on ids.id = table2.id
  left join table3
    on ids.id = table3.id