PostgreSQL is always the right answer to most MySQL problems, but your problem could be solved as follows:
The problem you ran into was that you had two left connections, i.e.
Left join X is a left join Y that inevitably gives you A x X x Y where you wanted (AxX) x (AxY)
A simple solution could be:
select xA,xB,xC,xD,yE,yF,yG from (SELECT AA,AB,XC,XD FROM A LEFT JOIN X ON AA=XA) x INNER JOIN (SELECT AA,YE,YF,YG FROM A LEFT JOIN Y ON AA=YA) y ON xA=yA
Test Details:
CREATE TABLE A (A varchar(3),B varchar(3)); CREATE TABLE X (A varchar(3),C varchar(3), D varchar(3)); CREATE TABLE Y (A varchar(3),E varchar(3), F varchar(3), G varchar(3)); INSERT INTO A(A,B) VALUES ('A1','B1'), ('A2','B2'), ('A3','B3'), ('A4','B4'); INSERT INTO X(A,C,D) VALUES ('A1','C1','D1'), ('A3','C3','D3'), ('A4','C4','D4'); INSERT INTO Y(A,E,F,G) VALUES ('A1','E1','F1','G1'), ('A2','E2','F2','G2'), ('A4','E4','F4','G4'); select xA,xB,xC,xD,yE,yF,yG from (SELECT AA,AB,XC,XD FROM A LEFT JOIN X ON AA=XA) x INNER JOIN (SELECT AA,YE,YF,YG FROM A LEFT JOIN Y ON AA=YA) y ON xA=yA
As a result, yes, MySQL has many many problems, but this is not one of them - most problems relate to more advanced materials.