Many-to-many problem

From: Raymond O'Donnell <rod(at)iol(dot)ie>
To: 'PostgreSQL' <pgsql-general(at)postgresql(dot)org>
Subject: Many-to-many problem
Date: 2010-03-18 22:50:19
Message-ID: 4BA2AE2B.2070602@iol.ie
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

G'night all,

I'm being driven nuts by an SQL problem which I think ought to be
simple, but I can't see the answer.

I have two tables related many-to-many via a third - they describe a set
of users, a set of applications and which users have been granted access
to which applications. What I want is to create a view which lists all
users and the applications to which they *don't* have access.

CREATE TABLE apps
(
appcode character varying(16) NOT NULL,
appnameshort character varying(32) NOT NULL,
...
CONSTRAINT apps_pk PRIMARY KEY (appcode)
);

CREATE TABLE users
(
uid character varying(16) NOT NULL,
surname character varying(32) NOT NULL,
firstname character varying(32) NOT NULL,
...
CONSTRAINT users_pkey PRIMARY KEY (uid)
);

CREATE TABLE canaccess
(
uid character varying(16) NOT NULL,
appcode character varying(16) NOT NULL,
pwd character varying(16) NOT NULL,
CONSTRAINT canaccess_pk PRIMARY KEY (uid, appcode),
CONSTRAINT appcode_fk FOREIGN KEY (appcode)
REFERENCES apps (appcode) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT uid_fk FOREIGN KEY (uid)
REFERENCES users (uid) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
);

I can do it easily enough for one user; my problem is doing it for all
users in one fell swoop.

I'm sure this is a very common problem, but I just can't see the
solution, so any pointers would be greatly appreciated.

Many thanks in advance....

Ray.

--
Raymond O'Donnell :: Galway :: Ireland
rod(at)iol(dot)ie

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Vikram Patil 2010-03-18 22:57:43 AIX postgresql error
Previous Message John R Pierce 2010-03-18 21:14:42 Re: database connections and presenting data on the web