DJ_smile
DJ_smile
采纳率75%
2017-08-21 03:40

如何根据sql语句条件自动生成可选列表,供用户选择

5
  • sql

/* 测试数据 数据库版本为 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

/*

有没有一个算法或者方案可以实现 :

当写一条语句 (语句如下),

--基本语句(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 = x
            ) a
where a.sdate = y

根据sql语句自动识别出:
x可能的值生成集合列表1(张三、李四、王五)
y可能的值胜场集合列表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'

想要的操作:
点击一个按钮,根据配置好的固定基本语句弹出窗口含两个可下拉选择的文本框,选择参数后执行最终语句。

*/

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • Qiaoyi_kong Qiaoyi_kong 4年前

    前台传递,判断属于哪个情况,走不同Sql。

    点赞 评论 复制链接分享
  • u012556249 风中的千纸鹤 4年前

    这个属于开发的范畴,已经不是数据库的范畴了,实现的话应该是可以的,通过前端页面传输的值,在后台生成SQL语句,这个用Java做起来应该不是很困难的

    点赞 评论 复制链接分享

相关推荐