Re: references table(multiple columns go here)

From: Gary Stainburn <gary(dot)stainburn(at)ringways(dot)co(dot)uk>
To: Tomasz Myrta <jasiek(at)klaster(dot)net>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: references table(multiple columns go here)
Date: 2002-12-19 11:37:38
Message-ID: 200212191137.38284.gary.stainburn@ringways.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Thursday 19 Dec 2002 11:30 am, Tomasz Myrta wrote:
> Gary Stainburn wrote:
> > On Thursday 19 Dec 2002 9:58 am, Tomasz Myrta wrote:
> > >Gary Stainburn wrote:
> > >>That did the trick. However, I now have another problem with the
> > >>constraint
> > >>complaining about there not being an index to refer to. However,
> > >>there is.
>
> The error is inside declaration of table "ranks.
> You can't create two similiar foreign keys: one based on field (rrank)
> and second one based on fields (rdid,rrank).
> You have to change:
> jrank int4 not null references ranks(rrank), -- needs sorting
> to
> jrank int4 not null, -- needs sorting

Oops, thought I'd removed that one. Sorry. Thanks for all the help here.
SQL's a totally different thought process to anything I'm used to, but I'm
getting there slowly.

>
> > This is probably because of my background in as a COBOL programmer where
> > having multiple fields of the same name can cause problems (especially
> > with
> > MF Cobol which only partially supports it) as well as early (read
> > early 80's)
> > database experince where it wasn't allowed. Also, I find it usefull
> > because
> > I know immediately which table a field has come from.
>
> As you wish.
>
> > Why does it make joins easier to use the same name for fields?
>
> If you create queries like this, you get rid of duplicates.
> select *
> from
> jobtypes
> join departments using (did)

I see your point. Maybe I'll have to rethink a bit. As I said, I'm having to
do a lot of rethinking.
>
> If you are afraid of duplicates, you can always use an alias:
> select
> ranks.rank_id as rid,
> ...
>
> If you want, here is my minimal version of your tables:
>
> create table depts (
> dept_id int4 primary key,
> ...
> };
>
> create table ranks (
> rank_id int4 default nextval('ranks_rid_seq') primary key,
> dept_id int4 references depts, -- department
> rank int4 not null, -- departmental rank
> rdesc character varying(40) -- Rank Description
> );
>
> create table jobtypes (
> jobtype_id int4 default nextval('jobs_jid_seq') primary key,
> rank_id int4 references ranks(rank_id),
> jdesc character varying(40) -- job description
> );
>
> Tomasz Myrta

--
Gary Stainburn

This email does not contain private or confidential material as it
may be snooped on by interested government parties for unknown
and undisclosed purposes - Regulation of Investigatory Powers Act, 2000

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message david williams 2002-12-19 12:32:51 unsubscribe
Previous Message Tomasz Myrta 2002-12-19 11:30:57 Re: references table(multiple columns go here)