Hello;

I want merge four MySQL tables to get the intersection that have a common field for all of them. Join two tables is fine to me, but my this case is different from common situations and there are not very many discussions about it. Can anybody give me some idea? Thanks a lot!

Here is part of my simplified tables (out of ~30000 rows per table and more than 10 columns of complicate formats, so that I do not want use shell command JOIN or other want to do the job!):

Code:

TableA:
A1 O
A2 P
A3 Q
A4 R
A5 S
A6 T
TableB:
B1 A1
B2 A2
B3 A3
B4 A4
B5 A1
B6 A2
Table C:
C1 A1
C2 A2
C3 A2
C4 A4
C5 A4
C6 A1
TableD
D1 A1
D2 A2
D3 A3
D4 A4
D5 A5
D6 A1

The output is expected to be:

Code:

B1 A1 C1 A1 D1 A1 O
B2 A2 C2 A2 D2 A2 P
B4 A4 C4 A4 D4 A4 R

My Code is:

SELECT

B.ID, B.AGI,

C.ID, C.AGI,

D.ID, D.AGI,

A.ID, A.AGI FROM TableB B, TableC C, TableD D, TableA A WHERE

B.AGI = A.ID

AND C.AGI = A.ID

AND D.AGI = A.ID

AND B.AGI = C.AGI

AND D.AGI = C.AGI

AND B.AGI = D.AGI;

But the output is not what I expected:

Code:

+------+------+------+------+------+------+------+------+
| ID | AGI | ID | AGI | ID | AGI | ID | AGI |
+------+------+------+------+------+------+------+------+
| B1 | A1 | C1 | A1 | D1 | A1 | A1 | O |
| B5 | A1 | C1 | A1 | D1 | A1 | A1 | O |
| B1 | A1 | C6 | A1 | D1 | A1 | A1 | O |
| B5 | A1 | C6 | A1 | D1 | A1 | A1 | O |
| B1 | A1 | C1 | A1 | D6 | A1 | A1 | O |
| B5 | A1 | C1 | A1 | D6 | A1 | A1 | O |
| B1 | A1 | C6 | A1 | D6 | A1 | A1 | O |
| B5 | A1 | C6 | A1 | D6 | A1 | A1 | O |
| B2 | A2 | C2 | A2 | D2 | A2 | A2 | P |
| B6 | A2 | C2 | A2 | D2 | A2 | A2 | P |
| B2 | A2 | C3 | A2 | D2 | A2 | A2 | P |
| B6 | A2 | C3 | A2 | D2 | A2 | A2 | P |
| B4 | A4 | C4 | A4 | D4 | A4 | A4 | R |
| B4 | A4 | C5 | A4 | D4 | A4 | A4 | R |
+------+------+------+------+------+------+------+------+
14 rows in set (0.00 sec)

Can anybody give me some idea? Got lost with the LEFT/ RIGHT/INNER JOINs. Expert suggestion can save me days of scratch. Thanks a lot!