高手帮忙,多表查询问题?这个查询该怎么写!(解决给高分!)

cswinter 2003-09-12 04:25:47
这个查询该怎么写?
两个表
表一 form
-------------------------------------------
| id | fname | fsort | fcontent| | 字段
-------------------------------------------
| 12 | f1 | A类 | ...... | 数据库记录
-------------------------------------------
......
-------------------------------------------
表二 sort
-------------------------------------------
| id | bsort | ssrot | gsort | 字段
-------------------------------------------
| 2 | 大类一 | 小类一 |A类,B类,C类| 数据库记录
-------------------------------------------
问题就是如何使表一里的fsort字段记录与表二的gsort记录对应起来;
已经有两个变量bsort,ssort;
可以查询出满足这两个变量的sort的gsort记录
select gsort from bsort='"&bsort&"' and ssort='"&ssort&"'
而我需要的是表一中的fname字段,满足的条件是fsort字段要属于
上面查询出来的gsort字段内数据;
这里介绍一下gsort这个字段:她实际是一个存储分类的字段,之间用豆号搁开
因为写如数据库的时候是用checkbox复选匡的直,所以里面的记录可以为一个
分类:如A类 也可以为两个:如B类,C类
也就是如何判断表一fsort字段内的数据是否属于(可以相等或为其中一个)
表二gsort字段内的数据
要求用一条语句写出来:
我是这样写的,但是查询的结果不是我想要的;
select form.fname from form,sort where sort.gsort like '%form.gsort%'
and sort.bsort='"&bsort&"' and sort.ssort='"&ssort&"'"


我想问题可能是出在'%form.gsort%'这里,程序执行的时候是否会把form.gsort当做字符窜来处理,而不是我想的当作数据表的一个字段呢?这点不明白;
我想过用instr函数来判断,但不知道该怎么写,请高手指点!
...全文
28 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
pazll 2003-09-18
  • 打赏
  • 举报
回复
access数据库你可以这样用啊!·~~
select form.fname from form,sort where instr(sort.gsort,form.fsort)>0
and sort.bsort='"&bsort&"' and sort.ssort='"&ssort&"'"
instr是access的内置函数,其实你已经想到了;就那样用吧;
如果你的数据库里确实有符合条件的记录的话,是不会出错的;
alan815 2003-09-13
  • 打赏
  • 举报
回复
SELECT DISTINCT form.fname
FROM form ,
sort
WHERE (form.fsort IN
(SELECT 'A类'
FROM sort
WHERE gsort LIKE '%A类%' AND bsort = '"&bsort&"' AND ssort = '"&ssort&"')) OR
(form.fsort IN
(SELECT 'B类'
FROM sort
WHERE gsort LIKE '%B类%' AND bsort = '"&bsort&"' AND ssort = '"&ssort&"')) OR
(form.fsort IN
(SELECT 'C类'
FROM sort
WHERE gsort LIKE '%C类%' AND bsort = '"&bsort&"' AND ssort = '"&ssort&"'))

今天没时间给你仔细想了,直接复制过去试试 ,这个应该可以,就算这个不行,你按着我的思路也肯定可以的,呵呵。肯定有更好的方法不用象我这么麻烦,懒得想^_^

呵呵,刚才忘了改成你的条件了,这回好了。
alan815 2003-09-12
  • 打赏
  • 举报
回复
SELECT DISTINCT form.fname
FROM form ,
sort
WHERE (form.fsort IN
(SELECT 'A类'
FROM sort
WHERE gsort LIKE '%A类%' AND bsort = 2 AND ssort = 3)) OR
(form.fsort IN
(SELECT 'B类'
FROM sort
WHERE gsort LIKE '%B类%' AND bsort = 2 AND ssort = 3)) OR
(form.fsort IN
(SELECT 'C类'
FROM sort
WHERE gsort LIKE '%C类%' AND bsort = 2 AND ssort = 3))

今天没时间给你仔细想了,直接复制过去试试 ,这个应该可以,就算这个不行,你按着我的思路也肯定可以的,呵呵。肯定有更好的方法不用象我这么麻烦,懒得想^_^
cswinter 2003-09-12
  • 打赏
  • 举报
回复
按照Brookes(边走边唱) 说的做了;
能够查询,
但是,查询的结果不正确,是怎么回事啊;
数据库有满足条件的记录,但是查询显示不出来;
李睿_Lee 2003-09-12
  • 打赏
  • 举报
回复
请问一下,你那种方法的查询结果是怎么样的?
我发现sort.bsort='"&bsort&"' and sort.ssort='"&ssort&"'"是不是有问题,
你的原意是什么?
说清楚了看我能不能帮你.
yzwxjun 2003-09-12
  • 打赏
  • 举报
回复
select form.fname from form,sort where instr(sort.gsort,form.fsort)>0
and sort.bsort='"&bsort&"' and sort.ssort='"&ssort&"'"
富察咪咪 2003-09-12
  • 打赏
  • 举报
回复
select form.fname from form,sort where sort.gsort like (select '%' + gsort +'%' from form ' and sort.bsort='"&bsort&"' and sort.ssort='"&ssort&"'"
试试
Brookes 2003-09-12
  • 打赏
  • 举报
回复
access:
select form.fname from form,sort where instr(sort.gsort,form.fsort)>0
and sort.bsort='"&bsort&"' and sort.ssort='"&ssort&"'"
cswinter 2003-09-12
  • 打赏
  • 举报
回复
忘了说了,我用的是access数据库;
没有chinaindex函数;

高手帮帮忙啊;
shleo 2003-09-12
  • 打赏
  • 举报
回复
用视图把
tiandiqing 2003-09-12
  • 打赏
  • 举报
回复
最好的办法是用别一个表把它们关连起来!
Brookes 2003-09-12
  • 打赏
  • 举报
回复
select form.fname from form,sort where charindex(form.fsort,sort.gsort)>0
and sort.bsort='"&bsort&"' and sort.ssort='"&ssort&"'"

hfkj 2003-09-12
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1998/1998650.xml?temp=.8839228

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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