日期:2014-05-16  浏览次数:20829 次

请好友们百忙之中,进来帮忙看看如何编写这段asp代码
科目表                          档案表
id    title                     userName    ExamId
1     语文                      张          1,3,4,5
2     数学                      李          2,4
3     英语
4     物理
5     化学


现在要显示的结果:

姓名     报考科目
张       语文|英语|物理|化学
李       数学|物理

请高手们百忙之中,帮忙看看。跪求ASP代码

------解决方案--------------------
表这样设计的话,不是太好搞啊。处理过程太复杂。效率不高。

你把科目ID都写到一个字段中去了。这个是不太好读出来的。

建议你再建一个表,用户ID与科目ID的对应表。再联表来读。
------解决方案--------------------

set rs=conn.execute("select * from 档案表")
do while not rs.eof

response.Write rs("userName")&" -- "

ExamIds = split(rs("ExamId"),",")
for i=0 to ubound(ExamIds)

response.Write conn.execute("select title from 科目表 where id="&ExamIds(i))(0)&"
------解决方案--------------------
"

next

response.Write "<hr>"

rs.movenext
loop
set rs=nothing

------解决方案--------------------
那要看你用的是什么数据库了
如果是 mysql (似乎现在比较流行这个),那么 mysql 提供了 find_in_set 函数
连接条件写作
find_inset(科目表.id, 档案表.ExamId)
再辅以 group_concat 函数就可轻松实现

若是 mssql或其他,你可以写成存储过程来实现