Mysql
 sql >> Database >  >> RDS >> Mysql

(My)SQL full join con tre tabelle

Per quanto ne so, non esiste un join esterno completo in MySql. Quindi, per fare ciò di cui hai bisogno, dovresti ottenere ID distinti nella tabella derivata e unire a sinistra le tabelle originali:

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