pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Stephan Szabo <sszabo@megazone23.bigpanda.com>
To: Matthew Nuzum <cobalt@bearfruit.org>
Cc: pgsql-sql@postgresql.org
Subject: Re: show data from two tables together
Date: Wed, 15 Jan 2003 19:26:08 -0800 (PST)
Message-ID: <20030115191320.R98147-100000@megazone23.bigpanda.com> (raw)
In-Reply-To: <003d01c2bcfa$d2084b40$6700a8c0@mattspc>


On Wed, 15 Jan 2003, Matthew Nuzum wrote:

> Well, this is somewhat of a follow up to my previous post regarding self
> joins.  Now what I'm hoping to do is "virtually" combine the results
> from two different record sets into one apparent record set.

Fortunately we have the set functions, specifically UNION ALL in this
case.

> Here is the skeleton of my application's data structure.  There is a
> table called "folders" and a table called "files".
>
> They look like:
>  | files         | folders
> =============   ============
> x| fileid       x| folderid
>  | filename      | foldername
>  | folderid      | parentid
>  | dsply_order   | dsply_order
>
> files.folderid is fk to folders.folderid, folders.parentid is field for
> self joining to folderid.
>
> As a side note, I'd probably need to add a field that would indicate 1
> if the file came from files otherwise count(folders.*) WHERE parentid =
> folderid so that I can see if the folder is empty.
>
> As another side note, this operation will be performed quite frequently
> and should be fast.
>
> As I think about it, it seems that the only logical way would be to do
> this at the application level, not inside postgres.  Please correct me
> if I'm wrong.

Maybe something like (minus the number of files/empty part):

CREATE VIEW viewname AS
 SELECT fileid, filename, folderid, dsply_order FROM files
  UNION ALL
 SELECT folderid, foldername, parentid, dsply_order FROM folders;

SELECT * from viewname where folderid=23 order by dsply_order;


Depending on whether you want a count of files or just an empty
or not, and whether you want info on whether a particular entry
is a file or folder, you'll probably need to add to the above.





view thread (3+ messages)  latest in thread

Message-ID: <20030115191320.R98147-100000@megazone23.bigpanda.com>
Permalink:  ../20030115191320.R98147-100000@megazone23.bigpanda.com/
Also on:    postgresql.org/message-id/20030115191320.R98147-100000@megazone23.bigpanda.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: sszabo@megazone23.bigpanda.com, cobalt@bearfruit.org
  Subject: Re: show data from two tables together
  In-Reply-To: <20030115191320.R98147-100000@megazone23.bigpanda.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox