说的不够详细...我再来一次!!在线等~~~~~~~~

akissofbye 2008-03-22 03:18:01
是这样的..我现在有三个表,第一个是用来保存某种业务的参数表,如出租房屋这种业务,有面积等等的参数.可以由用户自己增加或删除,第二个表用来记录登记的一些信息,如张三来登记出租房屋,第三个表是用来保存登记的具体信息,如登记了出租房屋,那么就从第一个表里查出参数的个数及名称..然后再一一保存进第三个表!!!问题来了...我现在要对第三个表做多条件查询...如面积>=100或 朝向为南等,这下麻烦了,用SQL字符串拼接没问题.但是参数类型全是STRING类型,不知道该如何来做了....是不是我的数据表设计错了?我刚学VB跟数据库,只懂少少,麻烦各位给点建议啦!!谢谢
tb_agParam:
id(自动编号) pid(文本) bname(文本) pname(文本)
1 cs001 出租房屋 面积
2 cs002 出租房屋 地址
3 cs003 出租房屋 楼层
4 cs004 出租房屋 朝向


tb_register:
id(自动编号) rid(文本) bname(文本) cname(文本) rdate(时间/日期)
1 jl0001 出租房屋 张三 2008-03-22
2 jl0002 求租房屋 李四 2008-03-22

tb_content:
id(自动编号) rid(文本) pname(文本) ptype(文本)
1 jl0001 面积 100
2 jl0001 地址 佛山
3 jl0001 楼层 3
4 jl0001 朝向 南
...全文
554 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongcheng28 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
好贴 说你的设计思路有问题的人 我觉得是他们没有清楚你的需求才会说出这样的话。。
[/Quote]

觉得虽然是有这样的需求,但是真正实现的话,这个思路还是有待商榷的。。
如果数据量大的话,查询的效率也有待验证。

不是说只要能实现功能就行的了。
hyblusea 2010-02-22
  • 打赏
  • 举报
回复
msjqd 2008-04-29
  • 打赏
  • 举报
回复
首先你的数据结构存在问题

如果非要这么做
一般你可以在tb_agParam表中添加一个字段 。确定字段的属性。
然后在用户选择字段的时候。用添加的字段来确定当前字段的属性。然后做判断、转换等
wang520d 2008-03-26
  • 打赏
  • 举报
回复
好贴 说你的设计思路有问题的人 我觉得是他们没有清楚你的需求才会说出这样的话。。
akissofbye 2008-03-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 JiangHongTao 的回复:]
SQL codeselect*fromtb_register awhereexists(select1fromtb_contentwherea.rid=ridandpname='面积'andptype>=100)--sql会自动类型转换。andexists(select1fromtb_contentwherea.rid=ridandpname='朝向'andptype='南')
[/Quote]

我的pType是字符串类型。。SQL不会帮我自动转换的。。数字字符串比较有点麻烦了
akissofbye 2008-03-24
  • 打赏
  • 举报
回复
刚刚试了下。。是这样做的。在每个参数后面做个下拉列表框。。让用户可以选择查询方式:如按范围查询、按大小查询等。。只是在做数字查询时限定了用户只能输入数字而已。。查询是完全可以的!!谢谢各位哦
akissofbye 2008-03-24
  • 打赏
  • 举报
回复
问题还没解决。。关于数据库的设计是不是有问题要更改我还得想想!!谢谢大家提意见。。。我正在做试验中·昨天放假没来CSDN。。不好意思
JiangHongTao 2008-03-24
  • 打赏
  • 举报
回复
这样更明白些,容易理解。
declare @v varchar(10)
select @v = '40'
select * from (
select 1 id,'字符串比较40<5' sm,case when @v> '5' then @v else 5 end as v union
select 2,'数字比较40>5' ,case when @v> 5 then @v else 5 end union
select 3,'字符串比较40>300' ,case when @v>'300' then @v else 300 end union
select 4,'数字比较40 <300' ,case when @v> 300 then @v else 300 end
) a order by id
/*
id sm v
----------- ---------------- -----------
1 字符串比较40<5 5
2 数字比较40>5 40
3 字符串比较40>300 40
4 数字比较40 <300 300
*/
JiangHongTao 2008-03-24
  • 打赏
  • 举报
回复
这不是转了嘛。
declare @v varchar(10)
select @v = '40'
select case when @v>5 then @v else 5 end
union select case when @v> 300 then @v else 300 end
/*
-----------
40
300
*/
JiangHongTao 2008-03-23
  • 打赏
  • 举报
回复
select * from tb_register a where 
exists (select 1 from tb_content where a.rid = rid
and pname ='面积' and ptype >=100)--sql会自动类型转换。
and
exists (select 1 from tb_content where a.rid = rid
and pname ='朝向' and ptype = '南')
JiangHongTao 2008-03-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 akissofbye 的帖子:]
是这样的..我现在有三个表,第一个是用来保存某种业务的参数表,如出租房屋这种业务,有面积等等的参数.可以由用户自己增加或删除,第二个表用来记录登记的一些信息,如张三来登记出租房屋,第三个表是用来保存登记的具体信息,如登记了出租房屋,那么就从第一个表里查出参数的个数及名称..然后再一一保存进第三个表!!!问题来了...我现在要对第三个表做多条件查询...如面积>=100或 朝向为南等,这下麻烦了,用SQL字符串拼接没问题.但是参数…
[/Quote]
---------------------------------------------------------------------------------------------
恩,你的思路和设计完全正确
你的查询可以这样写:
如面积>=100或 朝向为南等,
select * from tb_register a where 
exists (select 1 from tb_content where a.rid = rid
and (pname ='面积' and ptype >=100)--sql会自动类型转换。
and (pname ='朝向' and ptype = '南'))
-狙击手- 2008-03-22
  • 打赏
  • 举报
回复
看看
hery2002 2008-03-22
  • 打赏
  • 举报
回复
首先尽量简化你的数据库设计,尽量减少冗余数据和不必要的拆分.
其次,关于多表的模糊查询,写个存储过程,动态执行T-SQL即可.
http://topic.csdn.net/u/20080322/10/3ca74d95-9ef5-44d6-ad4b-44149c6fdaec.html
火龙岛主 2008-03-22
  • 打赏
  • 举报
回复
你的数据库有严重问题,数据库元素的基本原则之一就是,每个元素不可再分。
tb_agParam:
id(自动编号) pid(文本) bname(文本) pname(文本)
这个可以更改成
tb_agParam:
id(自动编号) pid(文本) bname(分类) pname(文本)
否则就没的玩了。
本来想帮你了,但是解决了这个,解决不了所有的。
建议更改数据库结构了。
Limpire 2008-03-22
  • 打赏
  • 举报
回复
这样是不可能查询的,请问你怎么穷举用户输入的pname,用户输入一个pname就是一组参数

例如数值型,假如支持范围查询的话,起码要三个参数:@pnameX,@minX,@maxX

注意,这是一个pname需要的参数。
dawugui 2008-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Limpire 的回复:]
提供这么大的灵活给用户?你自己定死有几项就行了,其它你可以开个memo,然用户自己输入。
不然我搞个上百项在里面都可以,装修材质、牌子、马桶型号、地板砖尺寸。。。晕死你。
[/Quote]

我同意这个,设置几个(或多个)固定指标,然后将没有的指标放入到备注中去.
zbc1009 2008-03-22
  • 打赏
  • 举报
回复
这样设计灵活性很好,数据也不冗余,但就是查询有点费事,不过也是有办法的,就像你说的拼接SQL。
对于表b_agParam建议多加一个字段,来标记属性的类型,到时候查询就可以用convert或者cast来处理了。
dawugui 2008-03-22
  • 打赏
  • 举报
回复
我上午就说过他的设计有问题了.
Limpire 2008-03-22
  • 打赏
  • 举报
回复
提供这么大的灵活给用户?你自己定死有几项就行了,其它你可以开个memo,然用户自己输入。
不然我搞个上百项在里面都可以,装修材质、牌子、马桶型号、地板砖尺寸。。。晕死你。
******************* 实践教学 ******************* 理工大学 计算机与通信学院 2011年春季学期 C程序设计 课程设计 题 目: 专业班级: 姓 名: 学 号: 指导教师: 成 绩:__________________ 摘 要 在车辆销售管理当中,人工统计的速度慢,并且容易出现差错。本车辆销售管理系统的自动化加速了统计工作,提高管理效率。本程序主要采用对输入的相关信息进行自动分析,然后按组分类将数据保存到数组,这样的结构化非常便于程序后续的统计工作。统计具体过程涉及到车辆进价售价及利润排序等问题,将于正文中详细介绍。本程序实现了所有设计要求。 关键词:文件;排序;统计;C语言 目 录 一、需求分析 1 二、总体设计 2 三、详细设计 3 3.1 详细设计思路 3 3.2 算法流程图 3 四、编码 7 五、测试 8 六、设计总结 12 参考文献 13 致谢 14 附录 15 一、需求分析 本程序将用到文件系统,list.txt文件内容作为数据源,其中单行内容代表一张纸条。程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数组当中,所以应提供文件输入的操作;由于纸条数据零散,所以要对原始数据进行分类操作并提供一个数组用于保存分类信息;在程序中要进行统计工作,所以要提供显示、排序等操作;另外应提供键盘式选择菜单实现功能选择。 二、总体设计 图1 车辆销售管理系统功能模块图 三、详细设计 3.1 详细设计思路 1.main()主函数 设置了程序的流程,结束程序。 2.select ( ) 选择函数 选择所想运行的各个函数. 3.functionscan ( ) 输入函数输入便条的数据. 4.function1 ( ) 文件的数据输入函数多次输入数据 5. function2 ( ) 统计函数每种汽车销售量以及销售额的统计 6. functionpaixu2 ( )总额排序函数按销售额对汽车进行排序 7. function4() 总额统计函数统计每种汽车的总额 8. function5() 统计报表函数统计商品总额 9. function6() 清空文件函数 清空文件数据 3.2 算法流程图 3.2.1保存函数Save()的算法流程图如图2所示。 图2 保存函数Save()的算法流程图 3.2.2输入函数input()的算法流程图如图3所示。 图3 输入函数的算法流程图 3.2.3 输出汽车信息 图4 输出汽车信息 四、编码 原始数据有汽车编码,车名,进价,售价,销售数量。年所以定义一个全局结构体数组scrip用于保存原始数据。然后定义全局变量n保存纸条数目,定义数组s用于保存分类后的信息。源代码见附录 五、测试 1输入新数据测试如图5所示 图5 输入新数据测试 2按车名查找数据测试如图6所示 图6按车名查找数据测试 3按编号查找数据测试如图7所示 图7 按编号查找数据测试 4按车辆名称删除数据测试如图8所示 图8车辆名称删除数据测试 5列出所有数据测试如图9所示 图9列出所有数据测试 6统计各产品的收益和总收益测试如图10所示 图10统计各产品的收益和总收益测试 7按车辆销售额的大小排序并输出排序后结果测试如图11所示 图11按车辆销售额的大小排序并输出排序后结果测试 六、设计总结 通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。 回顾起这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多的东西。同时不仅可以巩固了以前所学到的知识,而且学到了很多在书本上所没有学到过的知识,通过这次课程设计使我懂得了理论与实际相结合是很重要的。只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论。才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,通过同学的帮助,逐渐克服各种问题,并且从中学习到了很多的东西。通过这次编程。我发现了很多的不足。让我了解到自身的问题。让我不断的进步。 参考文献 1 C/C++程序设计,王连相等,中国科学技术出版社,2004 2 C语言程序设计,谭浩强,清华大学出版社,1999 3 C程序设计题解与上机指导,谭浩强,清华大学出版社,1999 4 C语言实用程序荟萃,西安电子科技大学出版社,1993 5 C语言函数手册,机械工业出版社,1999

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧