【发布时间】:2017-12-16 07:53:49
【问题描述】:
我想按照指定的批次统计学生的id。学生 ID 位于其他表中。我正在尝试从 dbo.Batches 中获取所有批次的详细信息,其中包含批处理 ID。同时我想计算那批注册的学生人数。 studentid 和批次 id 位于 dbo.studentbatchrelation 表中。到目前为止,我尝试过的是,应用子查询来生成批次的详细信息以及在特定批次中注册的学生人数。
以下是我的查询:
查询
(Select
Count(studentId) as TotalStudents
from
dbo.StudentBatchRelation
where
BatchId in (Select
b.Id as BatchId, b.CourseId as CourseId,
b.BatchNumber as BatchNumber,
b.BatchTimingsFrom as BatchTimingsFrom,
b.BatchTimingsTo as BatchTimingsTo,
b.BatchDuration as Duration, b.BatchDate as BatchDate,
b."Days" as "Days", b.CourseRoomId as CourseRoomId,
c.CourseName as CourseName,
cr.RoomName as RoomName,
cr.RoomCapacity as RoomCapacity
from
dbo."Batches" b, dbo.Courses c,
dbo.CourseRooms cr
where
b.CourseId = c.Id
and b.CourseRoomId = cr.Id
and b.ActiveBatch = 1 ));
批次的表结构
CREATE TABLE [dbo].[Batches] (
[Id] VARCHAR (250) NOT NULL,
[CourseId] VARCHAR (250) NOT NULL,
[BatchNumber] VARCHAR (250) NOT NULL,
[BatchTimingsFrom] TIME (7) NOT NULL,
[BatchTimingsTo] TIME (7) NOT NULL,
[BatchDuration] VARCHAR (50) NOT NULL,
[Days] VARCHAR (250) NOT NULL,
[CourseRoomId] VARCHAR (250) NOT NULL,
[BatchDate] VARCHAR (250) NULL,
[ActiveBatch] BIT DEFAULT ((0)) NULL,
CONSTRAINT [PK_Batches] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_BATCHES_COURSE] FOREIGN KEY ([CourseId]) REFERENCES [dbo].[Courses] ([Id]) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT [FK_BATCHES_CourseRoom] FOREIGN KEY ([CourseRoomId]) REFERENCES [dbo].[CourseRooms] ([Id]) ON DELETE CASCADE ON UPDATE CASCADE
);
StudentBatchRelation 的表结构
CREATE TABLE [dbo].[StudentBatchRelation] (
[Id] VARCHAR (250) NOT NULL,
[BatchId] VARCHAR (250) NOT NULL,
[StudentId] VARCHAR (250) NOT NULL,
[TransactionId] VARCHAR (250) NULL,
[RemainingAmount] VARCHAR (250) NULL,
[Status] VARCHAR (250) NULL,
CONSTRAINT [PK_StudentBatchRelation] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_StudentBatchRelation_Batch] FOREIGN KEY ([BatchId]) REFERENCES [dbo].[Batches] ([Id]) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT [FK_StudentBatch_TransactionId] FOREIGN KEY ([TransactionId]) REFERENCES [dbo].[TransactionTable] ([Id]) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT [FK_StudentBatchRelation_Student] FOREIGN KEY ([StudentId]) REFERENCES [dbo].[User] ([Id])
);
【问题讨论】:
-
请用小提琴给你的表格结构化
-
我可以在问题中写表结构吗?
-
是的,你可以。 (甚至更好)。
-
请参考我编辑的问题。
标签: sql sql-server tsql