DJ_smile 2017-08-21 03:40 采纳率: 75%
浏览 1094
已结题

如何根据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条回答 默认 最新

  • 风中的千纸鹤 2017-08-21 05:51
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大