我们有一个应用程序,用户正在输入他们的时间努力。我们有两个表,Production
用于输入所有生产任务的表和NonProduction
用于在应用程序中输入所有非生产相关任务的表。我们还有一个UserInfo
存储所有用户信息的表,例如他的 eCode、Name、Designation、RoleID、ImmediateSupervisor ECode,用户正在向其报告等。我们正在尝试以这种方式进行 sql 查询,以便任何角色 ID 大于 1 的用户都可以向下钻取并提取在他下报告的用户的生产和非生产信息,但条件是提取的报告仅具有 RoleID 1。例如,A Manager RoleID 是 4,所以他首先向下钻取并找到所有向他报告的用户(此信息在 UserInfo 表的 ImmediateSupervisor 列中)即 RoleID 3 或 RoleID 4,然后我们再次向下钻取这些用户并提取向他们报告的信息并一直持续到我们向下钻取到 ROleID 1 并且一旦我们向下钻取到该级别,
下面是Create Table格式的表结构查询;
生产台
CREATE TABLE [dbo].[Production]
(
[ProductionTimeEntryID] [int] IDENTITY(100, 1) NOT NULL,
[CalendarDate] [datetime] NOT NULL,
[UserID] [int] NOT NULL,
[NatureOfWorkID] [int] NOT NULL,
[RegionProjectID] [int] NOT NULL,
[CountyID] [int] NOT NULL,
[WorkTypeID] [int] NOT NULL,
[TaskID] [int] NOT NULL,
[VolumeProcessed] [int] NOT NULL,
[NosOfError] [int] NULL,
[NosOfVolumeAudited] [int] NULL,
[TimeSpent] [varchar](25) NULL,
[Comment] [varchar](250) NULL,
[IsTaskCompleted] [int] NOT NULL,
[isCurrentDayTask] [bit] NOT NULL,
[SupervisorECode] [nvarchar](50) NULL,
CONSTRAINT [PK_Production] PRIMARY KEY CLUSTERED([ProductionTimeEntryID] ASC)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Production] WITH NOCHECK ADD CONSTRAINT
[FK_Production_County] FOREIGN KEY([CountyID])
REFERENCES [dbo].[County] ([CountyID])
GO
ALTER TABLE [dbo].[Production] CHECK CONSTRAINT [FK_Production_County]
GO
ALTER TABLE [dbo].[Production] WITH NOCHECK ADD CONSTRAINT
[FK_Production_NatureOfWork] FOREIGN KEY([NatureOfWorkID])
REFERENCES [dbo].[NatureOfWork] ([NatureOfWorkID])
ON
UPDATE CASCADE
ON
DELETE CASCADE
GO
ALTER TABLE [dbo].[Production] CHECK CONSTRAINT [FK_Production_NatureOfWork]
GO
ALTER TABLE [dbo].[Production] WITH NOCHECK ADD CONSTRAINT
[FK_Production_RegionAndProjectInfo] FOREIGN KEY([RegionProjectID])
REFERENCES [dbo].[RegionAndProjectInfo] ([RegionProjectID])
GO
ALTER TABLE [dbo].[Production] CHECK CONSTRAINT
[FK_Production_RegionAndProjectInfo]
GO
ALTER TABLE [dbo].[Production] WITH CHECK ADD CONSTRAINT
[FK_Production_Task] FOREIGN KEY([TaskID])
REFERENCES [dbo].[Task] ([TaskID])
GO
ALTER TABLE [dbo].[Production] CHECK CONSTRAINT [FK_Production_Task]
GO
ALTER TABLE [dbo].[Production] WITH CHECK ADD CONSTRAINT
[FK_Production_USERINFO] FOREIGN KEY([UserID])
REFERENCES [dbo].[USERINFO] ([UserID])
ON
UPDATE CASCADE
ON
DELETE CASCADE
GO
ALTER TABLE [dbo].[Production] CHECK CONSTRAINT [FK_Production_USERINFO]
GO
ALTER TABLE [dbo].[Production] WITH CHECK ADD CONSTRAINT
[FK_Production_WorkType] FOREIGN KEY([WorkTypeID])
REFERENCES [dbo].[WorkType] ([WorkTypeID])
ON
UPDATE CASCADE
ON
DELETE CASCADE
GO
ALTER TABLE [dbo].[Production] CHECK CONSTRAINT [FK_Production_WorkType]
GO
ALTER TABLE [dbo].[Production] ADD DEFAULT((0)) FOR [IsTaskCompleted]
GO
ALTER TABLE [dbo].[Production] ADD DEFAULT((0)) FOR [isCurrentDayTask]
GO
用户信息表:
CREATE TABLE [dbo].[USERINFO](
[UserID] [int] IDENTITY(1,1) NOT NULL,
[UserECode] [nvarchar](50) NOT NULL,
[UserName] [nvarchar](250) NOT NULL,
[CCCode] [nvarchar](50) NULL,
[CCName] [nvarchar](50) NULL,
[Password] [varchar](50) NULL,
[IsFlagEnabled] [bit] NULL,
[IsFirstTimeUserLoggedIn] [bit] NULL,
[EmailAddress] [nvarchar](250) NULL,
[Designation] [varchar](50) NULL,
[ShiftStartTime] [varchar](8) NULL,
[ShiftEndTime] [varchar](8) NULL,
[WeekendShiftStartTime] [varchar](8) NULL,
[WeekendShiftEndTime] [varchar](8) NULL,
[RoleID] [int] NULL,
[ShiftEndFlagStatus] [int] NOT NULL,
[ShiftStartTimeWithTimeStamp] [datetime] NULL,
[ShiftEndTimeWithTimeStamp] [datetime] NULL,
[LoggedInDateTime] [datetime] NULL,
[FirstLoggedInOnthedayflag] [int] NOT NULL,
[ImmediateSupervisor] [nvarchar](50) NULL,
CONSTRAINT [PK_USER] PRIMARY KEY CLUSTERED
(
[UserID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[USERINFO] ADD DEFAULT ((1)) FOR [RoleID]
GO
ALTER TABLE [dbo].[USERINFO] ADD DEFAULT ((1)) FOR [ShiftEndFlagStatus]
GO
ALTER TABLE [dbo].[USERINFO] ADD DEFAULT ((1)) FOR [FirstLoggedInOnthedayflag]
GO
如何进行此类查询或查询类型以将其合并到我的应用程序中?