* [EMAIL PROTECTED] aka Catalin
> I have 6 tables of type (client character, amount numeric)
> and i want to join them in a single table containing the client
> and all the amounts (A1, A2, ..., A6) - 6 rows. A client can be
> in a single table or in many but is distinct in a table.
>
> T1 (C, A1)
> T2 (C, A2)
> T3 (C, A3)
> T4 (C, A4)
> T5 (C, A5)
> T6 (C, A6)
>
> and the result must be
>
> T (C, A1, A2, A3, A4, A5, A6)
>
> Which is the query?
If you don't allready have a client table, with every client once, you will
need one.
There should be an index on the C column of the tables T1-T6.
You say your client column is character, below I assume it is varchar(30),
change it to what you need:
# make client table
CREATE TABLE Cli (C varchar(30) NOT NULL PRIMARY KEY);
# populate client table
INSERT IGNORE INTO Cli SELECT C FROM T1;
INSERT IGNORE INTO Cli SELECT C FROM T2;
INSERT IGNORE INTO Cli SELECT C FROM T3;
INSERT IGNORE INTO Cli SELECT C FROM T4;
INSERT IGNORE INTO Cli SELECT C FROM T5;
INSERT IGNORE INTO Cli SELECT C FROM T6;
# make new table
CREATE TABLE T (
C varchar(30) NOT NULL PRIMARY KEY,
A1 NUMERIC, A2 NUMERIC, A3 NUMERIC,
A4 NUMERIC, A5 NUMERIC, A6 NUMERIC);
# populate new table:
INSERT INTO T SELECT Cli.C,A1,A2,A3,A4,A5,A6
FROM Cli
LEFT JOIN T1 ON T1.C = Cli.C
LEFT JOIN T2 ON T2.C = Cli.C
LEFT JOIN T3 ON T3.C = Cli.C
LEFT JOIN T4 ON T4.C = Cli.C
LEFT JOIN T5 ON T5.C = Cli.C
LEFT JOIN T6 ON T6.C = Cli.C
Your columns are maybe not named A1..A6, but they are all named 'amount'? In
that case, you can use something like this for the last step:
INSERT INTO T SELECT Cli.C,
T1.amount A1,T2.amount A2,T3.amount A3,
T4.amount A4,T5.amount A5,T6.amount A6
FROM Cli
LEFT JOIN T1 ON T1.C = Cli.C
LEFT JOIN T2 ON T2.C = Cli.C
LEFT JOIN T3 ON T3.C = Cli.C
LEFT JOIN T4 ON T4.C = Cli.C
LEFT JOIN T5 ON T5.C = Cli.C
LEFT JOIN T6 ON T6.C = Cli.C
HTH,
--
Roger
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]