求助啊,很着急,有段sql语句实在是不会写

时间:2021-07-09 21:56:34
数据库结构如下:
求助啊,很着急,有段sql语句实在是不会写

想要实现的功能如下:
求助啊,很着急,有段sql语句实在是不会写

求助啊,很着急,有段sql语句实在是不会写

问题描述:

想要实现一个项目分配专家,然后专家登陆评分的功能。
管理员分配专家后,在数据库[item]表中的expert1,expert2,expert3字段中分别对应着[expert]表中的ID字段,
在[score]表中,item_id字段对应[item]的ID字段,expert_id字段对应[expert]表中的ID字段,
在专家对项目评分之前,[score]表中没有要评分的项目的记录,只有当专家评分提交后,在[score]表中才会添加相应记录。

现在想做两个页面(如上面的第二、三张图),第一个页面是想要查找出分配给该专家的待评分的项目,第二个页面是查找出该专家已经评完分的项目,试了半天也没成功。

查出来的数据总是丢数据....明明没有评过分的项目,却显示不出来!
有没有更好的写法,更方便的写法,更准确的写法!

求改代码:
<%
set rs=server.createobject("adodb.recordset")
   sql="select * from (select [item].*,[expert].name as expName from [item],[expert] where [item].expert1=[expert].id or [item].expert2=[expert].id or [item].expert3=[expert].id and [expert].name='"&Session("name")&"' and [item].id not in(select [score].item_id from [score]) and [expert].id not in(select [score].expert_id from [score])) NTable where expName='"&Session("name")&"'"
rs.open sql,conn,1,1
%>


4 个解决方案

#1


引用 楼主 xp6756 的回复:
数据库结构如下:
求助啊,很着急,有段sql语句实在是不会写

想要实现的功能如下:
求助啊,很着急,有段sql语句实在是不会写

求助啊,很着急,有段sql语句实在是不会写

问题描述:

想要实现一个项目分配专家,然后专家登陆评分的功能。
管理员分配专家后,在数据库[item]表中的expert1,expert2,expert3字段中分别对应着[expert]表中的ID字段,
在[score]表中,item_id字段对应[item]的ID字段,expert_id字段对应[expert]表中的ID字段,
在专家评分对项目评分之前,[score]表中没有要评分的项目的记录,只有当专家评分提交后,在[score]表中才会添加相应记录。

现在想做两个页面(如上面的第二、三张图),第一个页面是想要查找出分配给该专家的待评分的项目,第二个页面是查找出该专家已经评完分的项目,试了半天也没成功。

求改代码:
<%
set rs=server.createobject("adodb.recordset")
   sql="select * from (select [item].*,[expert].name as expName from [item],[expert] where [item].expert1=[expert].id or [item].expert2=[expert].id or [item].expert3=[expert].id and [expert].name='"&Session("name")&"' and [item].id not in(select [score].item_id from [score]) and [expert].id not in(select [score].expert_id from [score])) NTable where expName='"&Session("name")&"'"
rs.open sql,conn,1,1
%>


查出来的数据总是丢数据....明明没有评过分的项目,却显示不出来!

有没有更好的写法,更方便的写法,更准确的写法!

#2


搞那么复杂干什么呢?既然是专家登陆后看的,那先在登陆信息里记录专家ID。
然后SQL里用Item表左连接Score表,查询条件是Item表的expert1,expert2,expert3等于专家ID,Scroe表为空的,就是未评分

#3


引用 2 楼 Novolee 的回复:
搞那么复杂干什么呢?既然是专家登陆后看的,那先在登陆信息里记录专家ID。
然后SQL里用Item表左连接Score表,查询条件是Item表的expert1,expert2,expert3等于专家ID,Scroe表为空的,就是未评分


具体应该怎么写啊

#4


思路给你了,具体怎么做要自己去做。
不知道什么是左连接,去查资料,关键词:left join

#1


引用 楼主 xp6756 的回复:
数据库结构如下:
求助啊,很着急,有段sql语句实在是不会写

想要实现的功能如下:
求助啊,很着急,有段sql语句实在是不会写

求助啊,很着急,有段sql语句实在是不会写

问题描述:

想要实现一个项目分配专家,然后专家登陆评分的功能。
管理员分配专家后,在数据库[item]表中的expert1,expert2,expert3字段中分别对应着[expert]表中的ID字段,
在[score]表中,item_id字段对应[item]的ID字段,expert_id字段对应[expert]表中的ID字段,
在专家评分对项目评分之前,[score]表中没有要评分的项目的记录,只有当专家评分提交后,在[score]表中才会添加相应记录。

现在想做两个页面(如上面的第二、三张图),第一个页面是想要查找出分配给该专家的待评分的项目,第二个页面是查找出该专家已经评完分的项目,试了半天也没成功。

求改代码:
<%
set rs=server.createobject("adodb.recordset")
   sql="select * from (select [item].*,[expert].name as expName from [item],[expert] where [item].expert1=[expert].id or [item].expert2=[expert].id or [item].expert3=[expert].id and [expert].name='"&Session("name")&"' and [item].id not in(select [score].item_id from [score]) and [expert].id not in(select [score].expert_id from [score])) NTable where expName='"&Session("name")&"'"
rs.open sql,conn,1,1
%>


查出来的数据总是丢数据....明明没有评过分的项目,却显示不出来!

有没有更好的写法,更方便的写法,更准确的写法!

#2


搞那么复杂干什么呢?既然是专家登陆后看的,那先在登陆信息里记录专家ID。
然后SQL里用Item表左连接Score表,查询条件是Item表的expert1,expert2,expert3等于专家ID,Scroe表为空的,就是未评分

#3


引用 2 楼 Novolee 的回复:
搞那么复杂干什么呢?既然是专家登陆后看的,那先在登陆信息里记录专家ID。
然后SQL里用Item表左连接Score表,查询条件是Item表的expert1,expert2,expert3等于专家ID,Scroe表为空的,就是未评分


具体应该怎么写啊

#4


思路给你了,具体怎么做要自己去做。
不知道什么是左连接,去查资料,关键词:left join