多条件联接查询问题

LinLinLin 2003-01-27 10:33:08
查询字段(取值于combobox1) 匹配条件(取值于 combobox2)值为= < > <> 
查询值 (取值于 EDIT1.text)
联接关系(取值于combobox3)关系 and或or
查询字段(取值于combobox4) 匹配条件(取值于 combobox5)值为= < > <>
查询值 (取值于 EDIT2.text)
联接关系(取值于combobox6)关系 and或or
查询字段 (取值于combobox7)匹配条件(取值于 combobox8)值为= < > <> 
查询值 (取值于 EDIT3.text)

详细说明联接关系的处理方法。
...全文
62 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
LinLinLin 2003-01-29
  • 打赏
  • 举报
回复
TO:NightCloud() 这样我照你的语句作了可以,
但是只有第一个条件可以用,第二和第三个还是不能用,
'select * from filedata where'#$D#$A'编号 = "001" And 编号 =和三'#$D#$A
NightCloud 2003-01-29
  • 打赏
  • 举报
回复
我举一个例子,希望能对你有所帮助
假定:
combobox1.text:='编号'; combobox2.text:='<>'; edit1.text:='001'
combobox3.text:='and' combobox4.text:='学号'; combobox5.text:='>'
edit2.text:='123' combobox6.text:='and' combobox7.text:='班级'
combobox8.text:='=' edit3.text:='456'
则sql语句为
select * from filedata where 编号<>001 and 学号>123 and 班级="456"

这是基本的格式,还有条件方面还要涉及到字段类型的不同,格式就不同,
比如班级是一个字符型的字段,那班级条件的值就必须用单引号和双引号
括起来(根据数据库类型的不同决定是单和双引号),而如果字段类型是
整形的话(如编号),条件值就不需要用引号括起来,等等
LinLinLin 2003-01-28
  • 打赏
  • 举报
回复
TO:yoic(我是一棵菠菜,菜,菜,菜,菜,菜,菜,)
先用IF,再用CASE的话,那你是怎么处理联接关系的呀!,我总共有两个联接关系的,如果是一个的话就好办了。
LinLinLin 2003-01-28
  • 打赏
  • 举报
回复
不好意思,我正在学SQL,这个当是练习,所以特来请教的!
望请指点。
wangzn1979 2003-01-28
  • 打赏
  • 举报
回复
我的天啊,
你的Sql语句到底是什么啊?
为什么你贴出来都不完全,这样怎么能说你的没有问题那?
查询语句,至少要完整啊
yoisyois 2003-01-28
  • 打赏
  • 举报
回复
if ...then...
case...of
end;
先这样设置条件,然后动态决定SQL.text
LinLinLin 2003-01-28
  • 打赏
  • 举报
回复
Tang-cogi@163.net
tangyong_delphi 2003-01-28
  • 打赏
  • 举报
回复
我做过,请给我电子邮件。
NightCloud 2003-01-28
  • 打赏
  • 举报
回复
假设combobox1.text里是表名
SQLstr:='select * from '+combobox1.text
+' where '+combobox2.text+' '+edit1.text;
老实说,我不太明白你的意思,刚刚学习SQL有必要弄这么复杂的东东吗,
先做一些简单的例子,把SQL的语法熟悉了再循序渐进地做更复杂一点地
例子。这样学习的效果才会好的呀
LinLinLin 2003-01-28
  • 打赏
  • 举报
回复
to NightCloud()
那这句
SQLstr:=SQLstr+' '+combobox3.text+' '+combobox4.text+' '+combobox5.text+''+edit2.text;
'select * from filedata.dat where'这个要写在哪里呀!
NightCloud 2003-01-28
  • 打赏
  • 举报
回复
sql语句的基本格式:'select 字段 from 表名 where 条件'
你条件前面少了where!还有你的表名呢?是filedata.dat吗?
LinLinLin 2003-01-28
  • 打赏
  • 举报
回复
to NightCloud()
'select * from filedata.dat'#$D#$A'编号 = "001"'#$D#$A
NightCloud 2003-01-28
  • 打赏
  • 举报
回复
你query1.open的地方设个断点,然后将光标移到SQLstr变量上,然后按
ctrl+F5,可以看见sqlstr的值,把现在的sqlstr语句值贴出来看看
LinLinLin 2003-01-27
  • 打赏
  • 举报
回复
我上次在这上面别人给了我一段查询代码,但我查询时总出现下面错误信息

DBISAM Engine Error # 11949 SQL error - select,insert,update,delete,create,alter or drop keyword expected,instead found '编号'
票票飞扬 2003-01-27
  • 打赏
  • 举报
回复
都不知道你在说什么。
query.sql.text := 'select * from tablename where '+combobox1.Items[combobox1.ItemIndex]+'='+combobox2.items[combobox2.itemindex];
LinLinLin 2003-01-27
  • 打赏
  • 举报
回复
to NightCloud()改为这样也不行呀!
SQLstr:='select * from filedata '+FindCB1.text+' '+MatchCB1.text+' '+FindEd1.text;

会提示这个错误信息:
DBISAM Engine Error # 11949 SQL error - End of SELECT statement expected,instead found '='
LinLinLin 2003-01-27
  • 打赏
  • 举报
回复
上面的代码如果有错的话请大家帮忙改改或指点迷津。
LinLinLin 2003-01-27
  • 打赏
  • 举报
回复
to NightCloud()用你的办法,上面那个问题解决了,
出现了新问题这个是提示信息:
DBISAM Engine Error # 11949 SQL error - End of SELECT statement expected,instead found '='
NightCloud 2003-01-27
  • 打赏
  • 举报
回复
你的select 在哪写了?
SQL语句开头都没有,怎么执行
SQLstr:='select * from '+combobox1.text+' '
~~~~~~~~~~~~~~~ +combobox2.text+' '+edit1.text;
i 服了 U
LinLinLin 2003-01-27
  • 打赏
  • 举报
回复
TO: wangzn1979(梦郎2001) 这个是照你那个方法弄出来
'编号 = 001'#$D#$A
加载更多回复(4)

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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