Mysql
 sql >> Datenbank >  >> RDS >> Mysql

(My)SQL Full Join mit drei Tabellen

Soweit ich weiß, gibt es in MySQL keine vollständige äußere Verknüpfung. Um das zu tun, was Sie benötigen, sollten Sie eindeutige IDs in der abgeleiteten Tabelle erhalten und die Originaltabellen links verknüpfen:

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