SQL 排课查询

wulg10 2011-01-27 04:30:55

表机构如下:
老师 课程 周数 天(星期几) 节次 年级 院系
张老师 语文 第一周 星期一 第1节-第2节 2008 中文系
李老师 数学 第一周 星期一 第5节-第6节 2009 数学系
白老师 英语 第二周 星期一 第1节-第2节 2008 英语系
张老师 语文 第一周 星期二 第3节-第4节 2010 化学系

根据年级和院系条件来查询

中文系、2008年级如下:
星期一 星期二 星期三 星期四 星期五 星期六 星期日
第一节-第二节 数学(李老师) 化学(xx老师) xx(xx老师) xx(xx老师) xx(xx老师)
第三节-第四节 语文(张老师) 化学(xx老师) xx(xx老师) xx(xx老师) xx(xx老师)
午休
第五节-第六节 化学(xx老师) 化学(xx老师) xx(xx老师) xx(xx老师) xx(xx老师)
第七节-第八节 物理(xx老师) 化学(xx老师) xx(xx老师) xx(xx老师) xx(xx老师)
晚修 xx(xx老师)


请问sql怎么查询,查询好之后asp.net后台怎么绑定好呢?
...全文
185 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2011-01-28
  • 打赏
  • 举报
回复
小三这个弄的很强大
AcHerat 元老 2011-01-27
  • 打赏
  • 举报
回复

/*
表机构如下:
老师 课程 周数 天(星期几) 节次 年级 院系
张老师 语文 第一周 星期一 第1节-第2节 2008 中文系
李老师 数学 第一周 星期一 第5节-第6节 2009 数学系
白老师 英语 第二周 星期一 第1节-第2节 2008 英语系
张老师 语文 第一周 星期二 第3节-第4节 2010 化学系

根据年级和院系条件来查询
*/

-->测试数据
create table tb(
teacher varchar(15),
cname varchar(15),
week varchar(15),
weekday varchar(15),
ordnum varchar(20),
grade varchar(10),
dept varchar(15)
)
insert into tb
select '张老师','语文','第一周','星期一','第1节-第2节','2008','中文系' union all
select '张老师','数学','第一周','星期二','第3节-第4节','2008','中文系' union all
select '张老师','英语','第一周','星期三','第3节-第4节','2008','中文系' union all
select '张老师','语文','第一周','星期四','第5节-第6节','2009','数学系' union all
select '张老师','语文','第一周','星期五','第1节-第2节','2008','英语系' union all
select '李老师','英语','第一周','星期一','第3节-第4节','2010','化学系' union all
select '李老师','语文','第二周','星期二','第5节-第6节','2008','中文系' union all
select '张老师','数学','第一周','星期六','第1节-第2节','2008','英语系' union all
select '张老师','数学','第一周','星期日','第5节-第6节','2008','中文系' union all
select '白老师','数学','第一周','星期一','第1节-第2节','2009','数学系' union all
select '白老师','数学','第二周','星期二','第5节-第6节','2008','中文系' union all
select '张老师','英语','第二周','星期二','第3节-第4节','2008','英语系'
go

create table week_day(weekday varchar(10))
insert into week_day
select '星期一' union all
select '星期二' union all
select '星期三' union all
select '星期四' union all
select '星期五' union all
select '星期六' union all
select '星期日'
go

declare @sql varchar(8000)
set @sql = 'select ordnum [节次]'
select @sql = @sql + ',isnull(max(case weekday when ''' + weekday + ''' then cname + ''('' + teacher + '')'' end),'''')' + weekday + ''
from week_day
select @sql = @sql + ' from tb where grade = ''2008'' and dept = ''中文系'' and week = ''第一周'' group by ordnum'
exec(@sql)

drop table tb,week_day

节次 星期一 星期二 星期三 星期四 星期五 星期六 星期日
-------------------- -------------------------------- -------------------------------- -------------------------------- -------------------------------- -------------------------------- -------------------------------- --------------------------------
第1节-第2节 语文(张老师)
第3节-第4节 数学(张老师) 英语(张老师)
第5节-第6节 数学(张老师)

(3 行受影响)
AcHerat 元老 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wulg10 的回复:]
d_arrangement表里没course_name 只有course_id.

SQL code

select (select dataD_name from s_dataD where dataD_id=排课表.节次ID) as '节次',(select course_name from b_course where course_id=排课表.课程ID) as course_na……
[/Quote]

两个表放一起联合查询。
wulg10 2011-01-27
  • 打赏
  • 举报
回复
d_arrangement表里没course_name 只有course_id.

select (select dataD_name from s_dataD where dataD_id=排课表.节次ID) as '节次',(select course_name from b_course where course_id=排课表.课程ID) as course_name

我是这样的
叶子 2011-01-27
  • 打赏
  • 举报
回复
C#数据绑定控件有:Repeater、DataList、GridView、DetailsView
你这种情况,在ASPNET中建议使用Repeater
AcHerat 元老 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wulg10 的回复:]
3楼的查询方法 有个是查询课程的名称,然后在想行转列,但是SQL报课程(course_name)无效
[/Quote]

在你的d_arrangement表里没有course_name字段。
wulg10 2011-01-27
  • 打赏
  • 举报
回复
3楼的查询方法 有个是查询课程的名称,然后在想行转列,但是SQL报课程(course_name)无效
wulg10 2011-01-27
  • 打赏
  • 举报
回复

arrangement_id arrangement_teacher_id arrangement_dept_id arrangement_course_id arrangement_class_id arrangement_course_type arrangement_term arrangement_grade arrangement_number arrangement_date arrangement_week arrangement_day arrangement_festival_type arrangement_festival_start_dataD_id arrangement_festival_end_dataD_id arrangement_kind_dataD_id arrangement_festival_start_date arrangement_festival_end_date arrangement_endweek arrangement_status arrangement_updateDate arrangement_createDate
-------------- ---------------------- ------------------- --------------------- -------------------- ----------------------- -------------------- -------------------------------------------------- ------------------ ----------------------- ---------------- --------------- ------------------------- ----------------------------------- --------------------------------- ------------------------- ------------------------------- ----------------------------- ------------------- ------------------ ----------------------- -----------------------
37 2 2 4 896 2 2011上 2011 20 2011-01-27 11:11:37.267 1 1 1 701 701 801 2011-01-27 11:11:37.000 2011-01-27 12:11:37.000 1 1 NULL 2011-01-27 11:11:37.280



看了你会更纠结的,有的数据都是外键。
AcHerat 元老 2011-01-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wulg10 的回复:]
SQL code

CREATE TABLE [dbo].[d_arrangement](
[arrangement_id] [int] IDENTITY(1,1) NOT NULL,
[arrangement_teacher_id] [int] NOT NULL,
[arrangement_dept_id] [int] NOT NULL,
[arran……
[/Quote]

纠结了,有数据没,附加一部分数据,你的字段太多了。
wulg10 2011-01-27
  • 打赏
  • 举报
回复

CREATE TABLE [dbo].[d_arrangement](
[arrangement_id] [int] IDENTITY(1,1) NOT NULL,
[arrangement_teacher_id] [int] NOT NULL,
[arrangement_dept_id] [int] NOT NULL,
[arrangement_course_id] [int] NOT NULL,
[arrangement_class_id] [int] NOT NULL,
[arrangement_course_type] [int] NOT NULL,
[arrangement_term] [varchar](20) NOT NULL,
[arrangement_grade] [varchar](50) NOT NULL,
[arrangement_number] [int] NOT NULL,
[arrangement_date] [datetime] NOT NULL,
[arrangement_week] [int] NOT NULL,
[arrangement_day] [int] NOT NULL,
[arrangement_festival_type] [int] NOT NULL,
[arrangement_festival_start_dataD_id] [int] NOT NULL,
[arrangement_festival_end_dataD_id] [int] NOT NULL,
[arrangement_kind_dataD_id] [int] NOT NULL,
[arrangement_festival_start_date] [datetime] NULL,
[arrangement_festival_end_date] [datetime] NULL,
[arrangement_endweek] [int] NOT NULL,
[arrangement_status] [int] NOT NULL,
[arrangement_updateDate] [datetime] NULL CONSTRAINT [DF_d_arrangement_student_card_updateDate] DEFAULT (getdate()),
[arrangement_createDate] [datetime] NOT NULL CONSTRAINT [DF_d_arrangement_student_card_createDate] DEFAULT (getdate()),

-----字段没说明
AcHerat 元老 2011-01-27
  • 打赏
  • 举报
回复

--把你create table 那段发出来!
wulg10 2011-01-27
  • 打赏
  • 举报
回复

select (select dataD_name from s_dataD where dataD_id=排课表.节次ID) as '节次',(select course_name from b_course where course_id=排课表.课程ID) as 'course_name', --说明课程名称
sum(case arrangement_day when '1' then course_name else '无' end) as '星期一',
sum(case arrangement_day when '2' then course_name else '无' end) as '星期二',
sum(case arrangement_day when '3' then course_name else '无'end) as '星期三',
sum(case arrangement_day when '4' then course_name else '无' end) as '星期四',
sum(case arrangement_day when '5' then course_name else '无' end) as '星期五',
sum(case arrangement_day when '6' then course_name else '无' end) as '星期六',
sum(case arrangement_day when '7' then course_name else '无' end) as '星期日' from d_arrangement
group by d_arrangement.arrangement_day,d_arrangement.arrangement_festival_start_dataD_id,arrangement_course_id

sql报 列名 'course_name' 无效。
Sphonix 2011-01-27
  • 打赏
  • 举报
回复
去精华里看看那个行转列的文章你就明白了~

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧