/ 测试数据 数据库版本为 MS SQL SEVER 2008 R2 /
--学生基础信息表
create table TB1(name VARCHAR(20),age int,PRIMARY KEY(name));
insert into TB1(name,age) values('张三',16);
insert into TB1(name,age) values('李四',17);
insert into TB1(name,age) values('王五',18);
--每一名学员报名的课程及上课时间
create table TB2(ID INT IDENTITY (1,1),name VARCHAR(20),curriculum VARCHAR(20),sdate date,PRIMARY KEY(ID));
insert into TB2(name,curriculum,sdate) values('张三','美术','2017-08-01');
insert into TB2(name,curriculum,sdate) values('张三','英语','2017-08-02');
insert into TB2(name,curriculum,sdate) values('李四','英语','2017-08-02');
insert into TB2(name,curriculum,sdate) values('李四','钢琴','2017-08-03');
insert into TB2(name,curriculum,sdate) values('王五','书法','2017-08-04');
--DROP TABLE TB1
--DROP TABLE TB2
/*
有没有一个算法或者方案可以实现 :
当获取一段文本(内容如下),其中有固定格式的标记$1,$2,
--基本语句(x可能不是直接对应的实际字段,可能会有多层嵌套生成的表集合):
select a.name ,a.age,a.curriculum,a.sdate
from ( select tb1.name,tb1.age,TB2.curriculum,tb2.sdate
from TB1 inner join TB2 on TB1.name = TB2.name
where tb1.name = $1
) a
where a.sdate = $2
程序根据文本类型的sql语句自动识别出$1可能的值集合,$2可能的值集合:
即 :$1可能的值生成集合列表1(张三、李四、王五)
:$2可能的值胜场集合列表2('2017-08-01'、'2017-08-02'、'2017-08-03'、'2017-08-04')
供前端用户选择(每个集合选择一个值后替换x、y)后执行最终的sql语句。
--根据参数列表选择后最终执行:
select a.name ,a.age,a.curriculum,a.sdate
from ( select tb1.name,tb1.age,TB2.curriculum,tb2.sdate
from TB1 inner join TB2 on TB1.name = TB2.name
where tb1.name = '张三'
) a
where a.sdate = '2017-08-02'
想要的操作:
点击一个按钮,根据配置好的固定基本语句弹出窗口含两个可下拉选择的文本框,选择参数后执行最终语句。
*/
--看了一年、终于理解点你的意思了、我简述一下
--首先、有两张表、一张是
学生基础信息表
、另一张是学生详细信息表
--之后、根据两张表的数据自动生成两个新的集合、一个记录学生名字(X)、另一个记录学生上课时间(Y)
--然后、记录(X)集合的数据会呈现在前台页面、以下拉列表框的形式供用户选择、当你选择一个(X)后、其对应的上课时间(Y)也会同时传值
--最后、传的值会执行最后的操作、Over