走过路过的朋友、各位大虾帮忙解决以下,小弟苦恼2天了……多谢!

[复制链接]
查看11 | 回复9 | 2007-10-20 08:38:44 | 显示全部楼层 |阅读模式
--//
--//算法说明:改算法的原理是,先通过一个SQL语句从数据库表中查询所有的结果放在临时表中,
--//然后再从临时表中读取用户所需的相关数据(@condition为用户输入的查询条件)
--//

DECLARE @condition varchar

--//创建临时表
create table #Classes_Info
(
classSpecialty varchar(50),
courseID char(6),
courseName varchar(20),
coursePeriod int , --//问题所在
courseCredit int , --//问题所在
courseKind int,--//问题所在
courseDescribe varchar(50)
)
begin

--//按条件将数据库中所相关数据插入临时表
insert into #Classes_Info
select distinct ClassesInfo.classSpecialty as '专业类别',Courses.courseID as '课程编号',Courses.courseName as '课程名称',Courses.coursePeriod as '课程学时',Courses.courseCredit as '课程学分',课程类别=

case courseKind
WHEN 0 THEN '公共课'
WHEN 1 THEN '专业课'

WHEN 2 THEN '选修课'

END,Courses.courseDescribe
from Courses,ClassesInfo
where not exists(select distinct studentCourseID
from StudentCoursesInfo
where not exists(select distinct studentID
from StudentsInfo
wherestudentClassID=classID))
order by classSpecialty
END

--//从临时表中读取用户所需的数据信息
select *

from #Classes_Info

where classSpecialty='"+condition+"' or courseID='"+condition+"' or courseName='"+condition+"' or
courseKind='"+condition+"'

order by classSpecialty

drop table#Classes_Info

在查询分析器里执行是提示:'courseCredit' 附近有语法错误,我想可能是类型转换时出了问题,望各位大虾帮忙指点。

如果不用临时表,有没有其他解决方案…………
请多多指教!在下谢过……
QQ:284074197
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
很多时候你先直接给出原始问题,然后才是你自己的一堆东西会比较有利于问题的理解和解决。
因为大多数人首先想理解的是问题本身 ,而不是你的解决方案的问题,如果你想首先解决问题的话。
还有,最好提供你的一些原始信息,这个问题中,你的 Courses,ClassesInfo的信息都没有给出,仅凭你给的临时表结构,如何确定‘列名无效’的问题所在呢?估计这边要猜上一段时间了。
把问题问清楚,你就已经解决一半问题了;把问题问得利于要求帮助,你就只剩下1/4问题了:)
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
在这里给出:
表1:Courses包含以下字段
courseID
char(6)

courseName varchar(50)

coursePeriodint

courseCredit int

courseKindint

courseDescribevarchar(100)
表2:ClassesInfo包含以下字段
classID
char(12)
classSpecialtyvarchar(50)

className varchar(50)

classDepartmentvarchar(50)

classCollegevarchar(50)

classTeacherID char(12)

表3:StudentCoursesInfo 包含以下字段
ID
int

studentID
char(12)

studentCourseIDchar(6)

studentGrade int

courseYear char(6)
表4:StudentsInfo包含以下字段
studentID
char(12)

studentNamevarchar(20)
studentSex
bit

studentNation varchar(20)

studentBirthday datetime
studentTime datetime

studentClassIDchar(12)
studentHome varchar(50)
studentElse varchar(100)

其中关联为:Courses.courseID=StudentCoursesInfo.courseID,

StudentCoursesInfo.studentID=StudentsInfo.studentID

StudentsInfo.studentClassID=ClassesInfo.classID
我想从ClassesInfo中读取classSpecialty 字段……
现在的问题是:我要得到一个查询结果集,需要显示Courses中的所有字段以及ClassesInfo中的classSpecialty 字段同时要将他们的列名改成汉语显示给用户……
如果有不清楚的地方欢迎提出,在线等待……多谢!
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
我知道的可能是@condition变量出了问题,因为他来自用户输入的文本信息,而我要查询的是Int类型的数据,可能是类型转换上出来问题,但是按道理这种想法应该是能实现的…………
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
还差
StudentCoursesInfo
StudentsInfo
以及你表之间如何关联
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
多谢关照,学习中……
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
怎么没人顶?
肚子饿了……
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
哦,你编辑了啊,还等你更新呢哈哈
select ci.classSpecialty '专业名',cr.courseID '课程编号', cr.courseName 课程名称,
cr.coursePeriod 课程学时, cr.courseCredit 课程学分,
case(cr.courseKind)
WHEN 0 THEN '公共课'
WHEN 1 THEN '专业课'
WHEN 2 THEN '选修课'
end 课程类型,cr.courseDescribe 课程描述
from Courses cr,ClassesInfo ci,StudentCoursesInfo sc,StudentsInfo s
where cr.courseID=sc.ID and sc.studentID=s.studentID and s.studentClassID=ci.classID

???
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
谢谢了……我试一下
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
问题解决了……多谢了!
学习……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行