注册 登录
编程论坛 ASP.NET技术论坛

[求助]相关表查询怎么写

垃圾的沉默 发布于 2007-08-02 18:53, 1112 次点击

A表和B表。。
我想用A表里的H1列作为B表查询条件
如:select H1 from A
select * from B where keyword='A表的H1'
程序怎么写??怎么套进去?

12 回复
#2
冰彩虹2007-08-02 21:20
select * from B where keyword=(select H1 from A)
#3
川流不息2007-08-03 00:59
彩虹的会报错:select H1 from A会有很多列。所以不能用keyword来等于。

select * from B
inner join A
on A.H1 = B.keyword;
#4
川流不息2007-08-03 01:02
不行就用left join等试试,我这没有数据库,无法给你试准确了。不好意思。
#5
jyoseyi2007-08-03 10:20

不会抱错

#6
jyoseyi2007-08-03 10:23
彩虹 查出的结果是表B的内容
川流 查出的结果是表A,B的内容

#7
cyyu_ryh2007-08-03 10:23
用2楼的子查询就可以了
#8
hinroe2007-08-03 10:55
好象川流说的对:我试了一下,大家看看我这个语句select * from MediaCategories where MediaCategories.CategoryID=(select CategoryID from MediaFile)用的是冰彩虹的方法写的,提示我“子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”好象(select CategoryID from MediaFile)返回的真的不是一个单个列,大家看看,有没有问题
#9
hinroe2007-08-03 11:01
而这种方法select * from MediaCategories inner join MediaFile on MediaCategories.CategoryID=MediaFile.CategoryID 查出来的就可以
#10
冰彩虹2007-08-03 12:31
如果select H1 from A会有多项,就这样吧

select * from B where keyword in (select H1 from A)
#11
jxnuwy042007-08-03 14:09
楼主的查询条件有问题:select h1 from A 得到的是一个集合
而select * from B where keyword='条件' 我想这条件是一个具体的值,你想想值跟集合怎么能用=来连接呢.
不知道楼主这条查询到底想得到一个什么样的结果?
我的理解是这样的:是不是将A中的H1字段作为条件,一个一个遍历的查询表B中与h1字段相等的集合. 
#12
net1249935132007-08-03 16:03
en  ~! 顶 2楼
#13
垃圾的沉默2007-08-03 17:12
以下是引用jxnuwy04在2007-8-3 14:09:20的发言:
楼主的查询条件有问题:select h1 from A 得到的是一个集合
而select * from B where keyword='条件' 我想这条件是一个具体的值,你想想值跟集合怎么能用=来连接呢.
不知道楼主这条查询到底想得到一个什么样的结果?
我的理解是这样的:是不是将A中的H1字段作为条件,一个一个遍历的查询表B中与h1字段相等的集合. 
我的意思就是这样..将A中的H1字段作为条件,一个一个遍历的查询表B中与h1字段相等的集合. 不好意思表达的不明确
我想这样的一个程序的算法..数据显示就是树型的那种.....那种算法我没做过..没什么概念..
怎么样去遍历出来..如果数据太多怎么样去控制内存 

[此贴子已经被作者于2007-8-3 17:13:45编辑过]

1