表a:
列名:id col1 col2 col3
值: 1 5 6 7
2 10 1 5表b:
列名:id colName factColName userId
值: 1 col1 价格 1
2 col1 汇率 2我解释一下,这是一个创建动态列的过程,表a 为动态列的值表,而表b 为动态列的定义表。
也就是说,系统预留了3列,由用户自己来定义列的相关信息。
用户1创建了一列,实际列名为价格,并且对应的值为5,即 价格=5
用户2创建了一列,实际列名为汇率,对应值为10,即 汇率=10问题:
1. 在界面上做新增操作,有一个输入框来输入价格,比如用户输入了5,我必须根据表b查到col1,并且在表a中的col1插入数值5.请问这个SQL语句如何写?
2. 在界面上做查询操作,一个查询条件是价格,比如输入了5,我需要得到表a中的id=1的这条记录,这个sql语句应该如何写?
3. 上面的查询和新增操作,不知道用hibernate该如何实现?急啊,大家帮帮忙,解决马上给分!见者有份!
列名:id col1 col2 col3
值: 1 5 6 7
2 10 1 5表b:
列名:id colName factColName userId
值: 1 col1 价格 1
2 col1 汇率 2我解释一下,这是一个创建动态列的过程,表a 为动态列的值表,而表b 为动态列的定义表。
也就是说,系统预留了3列,由用户自己来定义列的相关信息。
用户1创建了一列,实际列名为价格,并且对应的值为5,即 价格=5
用户2创建了一列,实际列名为汇率,对应值为10,即 汇率=10问题:
1. 在界面上做新增操作,有一个输入框来输入价格,比如用户输入了5,我必须根据表b查到col1,并且在表a中的col1插入数值5.请问这个SQL语句如何写?
2. 在界面上做查询操作,一个查询条件是价格,比如输入了5,我需要得到表a中的id=1的这条记录,这个sql语句应该如何写?
3. 上面的查询和新增操作,不知道用hibernate该如何实现?急啊,大家帮帮忙,解决马上给分!见者有份!
解决方案 »
- oracle触发器 修改后触发删除操作:当修改一个表中的某一个字段为1后,删除该表中该字段为 -1的记录
- 大师求助:下面的求出了一个月某字段的总数,耗时太多了
- 初学者
- 求sql
- 日期格式错误! 50分就这么轻松一个~~
- 请问如何解决OracleOraHome92HTTPServer服务不能启动问题
- 数据进行修改,分
- 偶的数据库想存放日文等多国文字,不知道怎么建立数据库?
- 原先的程序用access 数据库,当中有一个表叫 user 现在移到 oracle中,这个表名字是不是有错误呀
- Ubuntu 下 静默安装oracle出现的问题
- 请问个关于ascii的问题
- 采用什么样组网方式好呢,如何估算带宽?
完全不知道你在说什么
得到col1.... select colName from b where factColName='价格'
插入数据.... insert into a(col1) values('5')第二问:
雷同第一问的 得到 col1
查询数据.... select col1 from a where id='1'第三问:
......
hibernate 个人感觉速度很慢 还是直接用语句比较快
你需求的前提一定要确定:
首先根据b表的factColName和userId一定要能确定唯一的colName和id,
这样才能满足你的要求。
问题一:
create or replace procedure add_sel(l_val number) is
sql_str varchar2(2000);
temp varchar2(20);
temp_col varchar2(20);
temp_id number;
begin
select colname,id into temp_col,temp_id from sel2 where factColName='价格' and userid=1;
sql_str:='update sel1 set '||temp_col||'='||l_val||' where id='||temp_id;
execute immediate sql_str;
end add_sel;
/问题二:
select * from sel1 where id=(select id from sel2 where factColName='价格' and userid=1);
###############################################
SQL> select * from sel1; ID COL1 COL2 COL3
---------- ---------- ---------- ----------
1 5 6 7
2 0 0 0SQL> select * from sel2; ID COLNAME FACTCOLNAME USERID
---------- -------------------- -------------------- ----------
1 col1 价格 1
2 col1 汇率 2SQL> exec add_sel(100);PL/SQL 过程已成功完成。SQL> select * from sel1; ID COL1 COL2 COL3
---------- ---------- ---------- ----------
1 100 6 7
2 0 0 0SQL> select * from sel1 where id=(select id from sel2 where factColName='价格' and userid=1); ID COL1 COL2 COL3
---------- ---------- ---------- ----------
1 100 6 7
按照道理来说,你的价格的输入框也应该是动态产生的才对,因为只有当你数据库中有用户建立这个属性了,输入框才应该产生,如果是这样的话,当你对输入框赋值的时候,你应该已经知道b表的userid和b表的colName,按照这两个条件直接找到a进行insert的操作就可以了。
如果你的输入框是静态的,那么你只能先对b表进行判断,看是否有价格这个属性,对应的userid是谁,然后在按照这两个条件对a表操作。