有三张数据表:ENG(其中含ENG_SN 和ENG_TYPE两个字段),aircraft(其中含AC_ID 和AC_TYPE两个字段),Time(其中含ENG_SN和AC_ID两个字段),现在要从Time表中查询ENG_SN和AC_ID,ENG_SN必须是ENG表中符合条件ENG_TYPE=:ENG的ENG_SN,AC_ID必须是aircraft表中符合条件AC_TYPE=:AC的AC_ID),ENG,AC是参数。Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select ENG_SN ,AC_ID from Time');
Query_X.SQL.Add('where ENG_SN in');
Query_X.SQL.Add('(select ENG_SN from ENG where ENG_TYPE=:ENG)');
Query_X.SQL.Add('and AC_ID in');
Query_X.SQL.Add('(select AC_ID from aircraft where AC_TYPE=:AC)');
Query_X.ParamByName('ENG').AsString:='canshu1';
Query_X.ParamByName('AC').AsString:= 'canshu2';
Query_X.Prepare;
Query_X.Open;
最后执行的结果显两个where语句没有起作用,所有的记录都被选出来了。请问怎样写语句才能达到我所要求的结果呢?
Query1.SQL.Clear;
Query1.SQL.Add('Select ENG_SN ,AC_ID from Time');
Query_X.SQL.Add('where ENG_SN in');
Query_X.SQL.Add('(select ENG_SN from ENG where ENG_TYPE=:ENG)');
Query_X.SQL.Add('and AC_ID in');
Query_X.SQL.Add('(select AC_ID from aircraft where AC_TYPE=:AC)');
Query_X.ParamByName('ENG').AsString:='canshu1';
Query_X.ParamByName('AC').AsString:= 'canshu2';
Query_X.Prepare;
Query_X.Open;
最后执行的结果显两个where语句没有起作用,所有的记录都被选出来了。请问怎样写语句才能达到我所要求的结果呢?
解决方案 »
- 请问读取Paradox的DB文件有什么方便方法?
- 如何改变DBchart中柱子间的距离
- 如何用TXmlDocument删除xml中的节点?请高手帮忙
- 菜问:delphi写的WEB Service 服务器端程序是否可以在IIS/Apache下运行?
- 高手的来呢!!!
- 有没有这样的COMBOBOX ,有ITEMS 和 items 可对应的另一个值,可以获得那个值的?
- 在imageen控件中,如何设置扫描得分辨率和图像类别(比如,8位灰度),解决立即给分,
- delphi调用webservice有什么技巧等等的阿?
- TDateTimerPicker的DATE值的问题。
- 难道真的没人遇到这种问题吗?????
- 怎样控制DBGrid显示与否?
- 帮我看看这个怎么能做到这样的效果?
Query1.SQL.Clear;
Query1.SQL.Add('Select ENG_SN ,AC_ID from Time');
Query_X.SQL.Add
???
是不是写错了!!
不过从你的语句看好像没错!!!
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select Time.ENG_SN ,Time.AC_ID from Time,ENG,aircraft');
Query1.SQL.Add('where Time.ENG_SN=ENG.ENG_SN and Time.AC_ID=aircraft.AC_ID and ENG.ENG_TYPE=:E and aircraft.AC_TYPE=:AC');
Query1.ParamByName('E').AsString:='canshu1';
Query1.ParamByName('AC').AsString:='canshu2';
Query1.Prepare;
Query1.Open;
朋友们再帮我想想办法啊!