Re: select to combine 2 tables - Mailing list pgsql-general

From Thomas T. Thai
Subject Re: select to combine 2 tables
Date
Msg-id Pine.NEB.4.21.0106221541340.24907-100000@ns01.minnesota.com
Whole thread Raw
In response to Re: select to combine 2 tables  (wsheldah@lexmark.com)
Responses Re: Re: select to combine 2 tables  (Alex Pilosov <alex@pilosoft.com>)
Re: Re: select to combine 2 tables  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
On Fri, 22 Jun 2001 wsheldah@lexmark.com wrote:

>
>
> Use a union query:
>
> select rec_id, path, '' as link, name from cat_cat
> UNION
> select rec_id, path, link, name from cat_alias

there is no way to do this in a generic DBI way? i need for this to work
across diff kind of DBs.

>
> Notice that the two select statements need to have the same number of columns,
> and the fields should be in the same order.  Field names don't have to match as
> long as the datatypes are compatible.
>
>
>
>
> "Thomas T. Thai" <tom%minnesota.com@interlock.lexmark.com> on 06/22/2001
> 03:48:49 PM
>
> To:   PostgreSQL General <pgsql-general%postgresql.org@interlock.lexmark.com>
> cc:    (bcc: Wesley Sheldahl/Lex/Lexmark)
> Subject:  [GENERAL] select to combine 2 tables
>
>
> i have two tables:
>
> select * from cat_cat;
> +--------+------+--------------+
> | rec_id | path | name         |
> +--------+------+--------------+
> |      1 | 0202 | water crafts |
> |      2 | 02   | classifieds  |
> |      3 | 0204 | real estate  |
> |      4 | 0201 | auto         |
> |      5 | 0203 | pets         |
> +--------+------+--------------+
>
> select * from cat_alias;
> +--------+------+------+--------+
> | rec_id | path | link | name   |
> +--------+------+------+--------+
> |      1 | 02@@ | 0201 | cars   |
> |      2 | 02@@ |      | myLink |
> +--------+------+------+--------+
>
> i would like to have a query so that it combines two tables stacked on top
> of each other instead of side by side:
>
> *** totally incorrect query***
> SELECT * FROM cat_cat as cc, cat_alias as ca WHERE path like '02%';
>
> so that i'd get this:
>
> +--------+------+------+--------------+
> | rec_id | path | link | name         |
> +--------+------+------+--------------+
> |      1 | 0202 |      | water crafts |
> |      2 | 02   |      | classifieds  |
> |      3 | 0204 |      | real estate  |
> |      4 | 0201 |      | auto         |
> |      5 | 0203 |      | pets         |
> |      1 | 02@@ | 0201 | cars         |
> |      2 | 02@@ |      | myLink       |
> +--------+------+------+--------------+
>
> what's the correct query to accomplish that task?
>
> i could stuff everything in one table to begin with like so:
>
> CREATE TABLE cat_alias (
>   rec_id   int(11)  NOT NULL PRIMARY KEY,
>   path     char(256) NOT NULL,
>   link     char(256) NOT NULL,
>   name     char(64) NOT NULL
> );
>
> but since the 'link' column is an alias (symbolic link) pointing to a real
> path and is not used often, it would be waste of space.
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>


pgsql-general by date:

Previous
From: Martin Weinberg
Date:
Subject: Re: Re[4]: Postgres is too slow?
Next
From: Bruce Momjian
Date:
Subject: Re: Multiple Indexing, performance impact