* [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]

Reply via email to