首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

数据库夺标搜索,Instr的用法(Access数据库),该怎么处理

2012-02-01 
数据库夺标搜索,Instr的用法(Access数据库)3个表:表1: ParaL (存放 ToolType所有的参数信息)ItemIDToolTyp

数据库夺标搜索,Instr的用法(Access数据库)
3个表:
表1: ParaL (存放 ToolType所有的参数信息)
ItemIDToolTypeItemNameItemDegreeItemSortFlag_Available
TP0001STool_RderText1 1 MonitorY
TP0002STool_RderText12 1 MonitorY
TP0003STool_RderText13 1 MonitorY

表2:ToolL (存放 ToolID信息)
ToolTypeToolID
SEZ_DV28FDGPRS05
SEZ_DV28FDGPRS06
STool_RderDGPES07
STool_RderDGPES04

表3: ParaVL(存放已经编辑的 ToolID参数)
ItemIDToolID ItemValue ModifyReason Sponsor
TP0001DGPES04 10@eaNewCreate@20110730 114027F024754
TP0002DGPES04 fe@eaNewCreate@20110730 114838F024754

目前需要搜索的数据为:
显示表1 数据,条件 ToolID='DGPES04',且 ItemID不含有 表3中对应的ToolID已经存在的 ItemID,且 Flag为 Y.
即显示 某ToolType下选定的ToolID未编辑的 参数信息.


VB code
    WIS_Search_MDB_Str = "Select A.ItemID,A.ItemSort,A.ItemDegree,A.ItemName from (ParaL A left join ToolL B on A.ToolType=B.ToolType) left join ParaVL C on B.ToolID=C.ToolID "    WIS_Search_MDB_Str = WIS_Search_MDB_Str & " where Instr(A.ItemID,C.ItemID)=0 and B.ToolID ='" & Select_ToolInfo_ToolID & "' and A.Flag_Available='Y' "


但是显示的结果
TP0001STool_RderText1 1 MonitorY
TP0002STool_RderText12 1 MonitorY
TP0003STool_RderText13 1 MonitorY
TP0003STool_RderText13 1 MonitorY


不知道 搜索语句哪里出了问题?
其中Instr(A.ItemID,C.ItemID)=0,想表达的是 得到ParaL中 ItemID(ParaVL中 ItemID不存在)的数据.


[解决办法]
SQL code
Select A.ItemID,A.ItemSort,A.ItemDegree,A.ItemName from ParaL A LEFT join (Select * From ToolL where ToolID ='DGPES04')B on A.ToolType=B.ToolTypewhere  A.Flag_Available='Y' andA.ITEMID not in (Select itemid from ParaVL Where ToolID ='DGPES04') 

热点排行