后天要到省里参赛,我的软件里只剩下一个自定义查询搞不定了,请各位不吝赐教!!
急!!!难点如下:
设备管理系统中有“院系代码表”、“实验室代码表”、“经费来源代码表”、“供应商
代码表”等等9个代码表,另有“设备计划信息表”、“设备论证情况表”、“设备购买信
息表”、“需修改的设备信息表”等四个表。后面四个设备信息表中都有唯一字段的“设备
ID”,ID里包含了3位的院系代码和5位的实验室代码。“设备计划信息表”中包含了经费来
源代码,“设备购买信息表”中包含了供应商代码、发票领取人代码等等几个代码,在此表
结构基础上进行自定义查询时就出现了多表关联的问题。SQL Server 中有两种方式关联几
个表:
第一种例如:
select * from plans,Code_Lab where substring(plans.id,7,5)=Code_Lab.Code and 
Code.LabName='生物细胞实验室'第二种如:
select * from plans join Code_Lab on  substring(plans.id,7,5)=Code_Lab.Code and 
Code.LabName='生物细胞实验室'
这两种方法中我选择了第二种,因为这样关联各个表很方便,例如用户选择了一个表,我就
“join TableName on ...=... and ...>...”,但出现了新的问题:
如果用户选择的条件是“or”,我怎么处理?“or”的位置怎么根据用户的自定义条件合理
放置??怎样才能使用户指定的自定义查询条件组成正确的SQL语句???
以上只是举例说明了两个表的关联查询。软件中要关联的表达到十几个,现在不可能改表结
构。
这个问题我想很久了,不过对我来说很难的问题也许对你来说很容易,或许你也做过类似项
目,还望各位高手尽快解决!时间不等人啊!
附上我信箱和QQ:
电子信箱:[email protected]
QQ:1687537
在线等!晚上不睡了:((((((((((((

解决方案 »

  1.   

    对于n 张表的连接,至少必须有n-1 个条件。所以你的join 条件是必需的。愚认为不能省,至于用户选用or的条件,可以在语句后面用where 条件添加。
      

  2.   

    join on 主要是为了两个表之间的关联, 要另外加条件用 Where
      

  3.   

    也许我没表达清楚,把你sql重写一下
    select * from plans join Code_Lab on  substring(plans.id,7,5)=Code_Lab.Code 
    where Code.LabName='生物细胞实验室'