help - JOIN problem - Mailing list pgsql-sql
From | chief_87@yahoo.com (KeithR) |
---|---|
Subject | help - JOIN problem |
Date | |
Msg-id | b2f93c8c.0204160610.41b128db@posting.google.com Whole thread Raw |
Responses |
Re: help - JOIN problem
|
List | pgsql-sql |
note: I also posted this in mailing.database.sql-general http://groups.google.com/groups?hl=en&group=mailing.database.sql-general&selm=b2f93c8c.0204151045.57840ed9%40posting.google.com Hi all, I have 3 tables; USER, ACCESS_PATH, and ACCESS (All of the generation scripts are at the end). USER contains users information, ACCESS_PATH contains a URL and an ID, and ACCESS contains USER ids and ACCESS ids I am basically trying to adminster my home website with access levels. So user1 can see some stuff, and user2 can see some other stuff, while I (admin) can see everything. Here's my problem I'd like to have a query that does a left join on the cartesian product of USER and ACCESS, thus showing me what users do and do not have access to, so when a NULL value comes up for some column ex: 'enabled', the user does not have access otherwise they do. Any help appreciated, Keith --------------- if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ACCESS_ACCESS_PATH]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[ACCESS] DROP CONSTRAINT FK_ACCESS_ACCESS_PATH GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ACCESS_USER]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[ACCESS] DROP CONSTRAINT FK_ACCESS_USER GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ACCESS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[ACCESS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ACCESS_PATH]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[ACCESS_PATH] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USER]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[USER] GO CREATE TABLE [dbo].[ACCESS] ([user_id] [int] NOT NULL ,[access_id] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[ACCESS_PATH] ([access_id] [int] IDENTITY (1, 1) NOT NULL ,[path] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_ASNULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[USER] ([user_id] [int] IDENTITY (1, 1) NOT NULL ,[fname] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_ASNULL ,[lname] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[ACCESS] WITH NOCHECK ADD CONSTRAINT [PK_ACCESS] PRIMARY KEY CLUSTERED ( [user_id], [access_id]) ON [PRIMARY] GO ALTER TABLE [dbo].[ACCESS_PATH] WITH NOCHECK ADD CONSTRAINT [PK_ACCESS_PATH] PRIMARY KEY CLUSTERED ( [access_id]) ON[PRIMARY] GO ALTER TABLE [dbo].[USER] WITH NOCHECK ADD CONSTRAINT [PK_USER] PRIMARY KEY CLUSTERED ( [user_id]) ON [PRIMARY] GO ALTER TABLE [dbo].[ACCESS] ADD CONSTRAINT [FK_ACCESS_ACCESS_PATH] FOREIGN KEY ( [access_id]) REFERENCES [dbo].[ACCESS_PATH]( [access_id]),CONSTRAINT [FK_ACCESS_USER] FOREIGN KEY ( [user_id]) REFERENCES [dbo].[USER] ( [user_id]) GO