Thread: work on some tables in the same time.

work on some tables in the same time.

From
Jerome Raupach
Date:
I want to execute this query on some table2 in the same time :

INSERT INTO table2_n(f1, f2, f3)SELECT DISTINCT f1, f2, f3 FROM table1_n ;

------------------------------------------------------------------

CREATE TABLE table1_1( INT2 f1, INT2 f2, INT2 f3, INT2 f4 );
CREATE TABLE table1_2( INT2 f1, INT2 f2, INT2 f3, INT2 f4 );
...

CREATE TABLE table2_1( INT2 f1, INT2 f2, INT2 f3 );
CREATE TABLE table2_2( INT2 f1, INT2 f2, INT2 f3 );
...

------------------------------------------------------------------

Anyone can help me ?
Thanks in advance.

Jerome.


Re: work on some tables in the same time.

From
Ian Turner
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> I want to execute this query on some table2 in the same time :
> 
> INSERT INTO table2_n(f1, f2, f3)
>     SELECT DISTINCT f1, f2, f3 FROM table1_n ;

One way would be to do:
BEGIN
CREATE VIEW tableselecttemp ASSELECT DISTINCT f1, f2, f3 FROM table1_n;
INSERT INTO table2_n(f1, f2, f3) SELECT * FROM tableselecttemp;
INSERT INTO table2  (f1, f2, f3) SELECT * FROM tableselecttemp;
DROP VIEW tableselecttemp;
ROLLBACK;

Alternatively, run the select query twice without the temporary
view. You'll have to try it both ways, on a realistic data set, to see
which is faster for you.

Ian
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE5v6HGfn9ub9ZE1xoRAuo0AJwNCXhjE4WWH0WMeZrLZCjrR/H37ACZAR4N
FkuWQ4rEUUMI6bCcZkCU3XA=
=q6gb
-----END PGP SIGNATURE-----



Re: work on some tables in the same time.

From
Jerome Raupach
Date:
Thanks, but:

testdb=#CREATE VIEW tableselecttemp AS SELECT DISTINCT f1, f2, f3 FROM
table1_n;
ERROR:  DISTINCT not supported in views

Jerome.


Ian Turner wrote:
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> > I want to execute this query on some table2 in the same time :
> >
> > INSERT INTO table2_n(f1, f2, f3)
> >       SELECT DISTINCT f1, f2, f3 FROM table1_n ;
> 
> One way would be to do:
> BEGIN
> CREATE VIEW tableselecttemp AS
>         SELECT DISTINCT f1, f2, f3 FROM table1_n;
> INSERT INTO table2_n(f1, f2, f3) SELECT * FROM tableselecttemp;
> INSERT INTO table2  (f1, f2, f3) SELECT * FROM tableselecttemp;
> DROP VIEW tableselecttemp;
> ROLLBACK;
> 
> Alternatively, run the select query twice without the temporary
> view. You'll have to try it both ways, on a realistic data set, to see
> which is faster for you.
> 
> Ian
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.0.1 (GNU/Linux)
> Comment: For info see http://www.gnupg.org
> 
> iD8DBQE5v6HGfn9ub9ZE1xoRAuo0AJwNCXhjE4WWH0WMeZrLZCjrR/H37ACZAR4N
> FkuWQ4rEUUMI6bCcZkCU3XA=
> =q6gb
> -----END PGP SIGNATURE-----


Re: work on some tables in the same time.

From
Ian Turner
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> testdb=#CREATE VIEW tableselecttemp AS SELECT DISTINCT f1, f2, f3 FROM
> table1_n;
> ERROR:  DISTINCT not supported in views

In that case, you'll have to create a temporary table instead. This may
actually be faster, because you only have to search table1_n once.

Ian
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE5v6gBfn9ub9ZE1xoRAh1GAKC7SvP2orhC9lZsC0BJaqntXGlmOQCfTwj4
/Qmr4PIfcE7Ue9UEZAWGhrM=
=VV5w
-----END PGP SIGNATURE-----



Re: work on some tables in the same time.

From
Stephan Szabo
Date:
I'm assuming you want "n" to be replaced by the numbers up to
the last one where there is a table1_n and table2_n, right?

I'd suggest looking and PL/TCL (or if you can wait for 7.1, you
can probably do it in PL/PGSQL as well with the new exec stuff.)
and writing a function that does the inserts for you.

Stephan Szabo
sszabo@bigpanda.com

On Wed, 13 Sep 2000, Jerome Raupach wrote:

> I want to execute this query on some table2 in the same time :
> 
> INSERT INTO table2_n(f1, f2, f3)
>     SELECT DISTINCT f1, f2, f3 FROM table1_n ;
> 
> ------------------------------------------------------------------
> 
> CREATE TABLE table1_1( INT2 f1, INT2 f2, INT2 f3, INT2 f4 );
> CREATE TABLE table1_2( INT2 f1, INT2 f2, INT2 f3, INT2 f4 );
> ...
> 
> CREATE TABLE table2_1( INT2 f1, INT2 f2, INT2 f3 );
> CREATE TABLE table2_2( INT2 f1, INT2 f2, INT2 f3 );
> ...
> 
> ------------------------------------------------------------------
> 
> Anyone can help me ?
> Thanks in advance.
> 
> Jerome.
>