- Home
- LLBLGen Pro
- LLBLGen Pro Runtime Framework
Subselect on the same entity
Posts
Posts: 19
Joined: 13-Feb-2007
Joined: 13-Feb-2007
# Posted on: 06-Apr-2007 23:35:04
Ok guys I need help constructing filter for the following query. What I am trying to get is a list of userids that are 'External' users and that are for one of the 'Clients' in the list.
SELECT DISTINCT [Users].[UserID] AS [UserId]
FROM (( [Users]
INNER JOIN [UserProfile]
ON [Users].[UserID]=[UserProfile].[UserID])
INNER JOIN [ProfilePropertyDefinition]
ON [ProfilePropertyDefinition].[PropertyDefinitionID]=[UserProfile].[PropertyDefinitionID])
WHERE [ProfilePropertyDefinition].[PortalID] = 0
AND [ProfilePropertyDefinition].[PropertyName] = 'UserType' AND [UserProfile].[PropertyValue] = 'External'
AND Users.UserId IN
(SELECT Users.UserId
FROM Users
INNER JOIN [UserProfile]
ON [Users].[UserID]=[UserProfile].[UserID]
INNER JOIN [ProfilePropertyDefinition]
ON [ProfilePropertyDefinition].[PropertyDefinitionID]=[UserProfile].[PropertyDefinitionID]
WHERE
[ProfilePropertyDefinition].[PropertyName] = 'Client' AND [UserProfile].[PropertyValue] IN ('Allen ISD', 'Fort Worth ISD'))
Here is the schema for UserProfile and ProfilePropertyDefinition tables
ProfilePropertyDefinition:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ProfilePropertyDefinition](
[PropertyDefinitionID] [int] IDENTITY(1,1) NOT NULL,
[PortalID] [int] NULL,
[ModuleDefID] [int] NULL,
[Deleted] [bit] NOT NULL,
[DataType] [int] NOT NULL,
[DefaultValue] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PropertyCategory] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[PropertyName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Length] [int] NOT NULL CONSTRAINT [DF_ProfilePropertyDefinition_Length] DEFAULT (0),
[Required] [bit] NOT NULL,
[ValidationExpression] [nvarchar](2000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ViewOrder] [int] NOT NULL,
[Visible] [bit] NOT NULL,
CONSTRAINT [PK_ProfilePropertyDefinition] PRIMARY KEY CLUSTERED
(
[PropertyDefinitionID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
USE [db_DCS_PowerFleet_Portal]
GO
ALTER TABLE [dbo].[ProfilePropertyDefinition] WITH CHECK ADD CONSTRAINT [FK_ProfilePropertyDefinition_Portals] FOREIGN KEY([PortalID])
REFERENCES [dbo].[Portals] ([PortalID])
ON DELETE CASCADE
UserProfile:
/****** Object: Table [dbo].[UserProfile] Script Date: 04/06/2007 16:24:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[UserProfile](
[ProfileID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NOT NULL,
[PropertyDefinitionID] [int] NOT NULL,
[PropertyValue] [nvarchar](3750) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PropertyText] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Visibility] [int] NOT NULL CONSTRAINT [DF__UserP__Visib__1352D76D] DEFAULT (0),
[LastUpdatedDate] [datetime] NOT NULL,
CONSTRAINT [PK_UserProfile] PRIMARY KEY NONCLUSTERED
(
[ProfileID] ASC
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
USE [db_DCS_PowerFleet_Portal]
GO
ALTER TABLE [dbo].[UserProfile] WITH NOCHECK ADD CONSTRAINT [FK_UserProfile_ProfilePropertyDefinition] FOREIGN KEY([PropertyDefinitionID])
REFERENCES [dbo].[ProfilePropertyDefinition] ([PropertyDefinitionID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[UserProfile] CHECK CONSTRAINT [FK_UserProfile_ProfilePropertyDefinition]
GO
ALTER TABLE [dbo].[UserProfile] WITH NOCHECK ADD CONSTRAINT [FK_UserProfile_Users] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[UserProfile] CHECK CONSTRAINT [FK_UserProfile_Users]
Here what this select yields
SELECT DISTINCT [Users].[UserID] AS [UserId],
[ProfilePropertyDefinition].[PropertyName],
[UserProfile].[PropertyValue]
FROM (( [Users]
INNER JOIN [UserProfile]
ON [Users].[UserID]=[UserProfile].[UserID])
INNER JOIN [ProfilePropertyDefinition]
ON [ProfilePropertyDefinition].[PropertyDefinitionID]=[UserProfile].[PropertyDefinitionID])
1 FirstName SuperUser
1 LastName Account
1 PreferredLocale en-US
1 TimeZone 0
2 FirstName Administrator
2 LastName Account
2 PreferredLocale en-US
2 TimeZone -480
28 Client Allen ISD
28 Organization Wilson Elementary School
28 Position Security Administrator
28 PreferredLocale en-US
28 TimeZone -480
28 UserType External
29 Organization Wilson Elementary School
29 UserType External
30 Client Allen ISD
30 Organization Wilson Elementary School
30 Position teacher
30 UserType External
31 Client Allen ISD
31 Organization Wilson Elementary School
31 Position teacher
31 UserType External
32 Telephone 4696282125
32 UserType Internal
# Posted on: 08-Apr-2007 20:53:10
You can use FieldCompareSetPredicate (http://www.llblgen.com/TinyForum/Messages.aspx?ThreadID=9495) and TypedList (LLBLGenPro Help - Adapter|SS - Using TypedList - TypedViews and Dynamic Lists - Using typed list classes.
Tell us if you can make it.