Many-to-many problem - Mailing list pgsql-general

From Raymond O'Donnell
Subject Many-to-many problem
Date
Msg-id 4BA2AE2B.2070602@iol.ie
Whole thread Raw
Responses Re: Many-to-many problem  (Joe Conway <mail@joeconway.com>)
Re: Many-to-many problem  (Grant Allen <gxallen@gmail.com>)
List 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@iol.ie

pgsql-general by date:

Previous
From: John R Pierce
Date:
Subject: Re: database connections and presenting data on the web
Next
From: Joe Conway
Date:
Subject: Re: Many-to-many problem