表A结构如下:
id ref
--------------------------
001 x
002 y
002 z表B结构如下:
ref_id tab
--------------------------
x C
y D
z E表C的结构:
id ...
--------------------------
001 ...表D的结构:
id ...
--------------------------
002 ...表E的结构:
id ...
--------------------------
003 ...
问题如下:
A是索引表,B是映射表,C,D,E三个表是主数据表,A表和B表的关联通过A.ref = B.ref_id,B中的tab字段存储的是具体的表名,我要根据A表中的id和B表中的tab去查询具体在C,D,E表中的内容
举个例子,A表中的第一条,关联到了B表中的第一条,通过B.tab我知道具体内容存在C表,我就根据A.id去C表中查询具体内容我的问题是如果A表的数据量比较大,我不能一条一条的取再对于到其他表去查,这样效率很低,谁有好点的办法!我所能够想到的是A和B表做连接查询,把查出来的B.tab归来,有多少个记录,我就写多少个sql语句,对于同一个归类的里面所有的A.id我可以拼个字符串,使用select * from C where in (...)的方式,我不知道in里面可以放多少内容,有没有数量限制!( C, D, E表的结构相同 )谁还有更好一点的办法告诉我一下!我是用sap系统对别的系统做接口,不能写存贮过程,求标准的SQl语句
id ref
--------------------------
001 x
002 y
002 z表B结构如下:
ref_id tab
--------------------------
x C
y D
z E表C的结构:
id ...
--------------------------
001 ...表D的结构:
id ...
--------------------------
002 ...表E的结构:
id ...
--------------------------
003 ...
问题如下:
A是索引表,B是映射表,C,D,E三个表是主数据表,A表和B表的关联通过A.ref = B.ref_id,B中的tab字段存储的是具体的表名,我要根据A表中的id和B表中的tab去查询具体在C,D,E表中的内容
举个例子,A表中的第一条,关联到了B表中的第一条,通过B.tab我知道具体内容存在C表,我就根据A.id去C表中查询具体内容我的问题是如果A表的数据量比较大,我不能一条一条的取再对于到其他表去查,这样效率很低,谁有好点的办法!我所能够想到的是A和B表做连接查询,把查出来的B.tab归来,有多少个记录,我就写多少个sql语句,对于同一个归类的里面所有的A.id我可以拼个字符串,使用select * from C where in (...)的方式,我不知道in里面可以放多少内容,有没有数量限制!( C, D, E表的结构相同 )谁还有更好一点的办法告诉我一下!我是用sap系统对别的系统做接口,不能写存贮过程,求标准的SQl语句
这句怎么理解?
你最好能举个简单的示例
id ref
--------------------------
001 x
002 y
003 z
004 x关联到B表就可以知道到id是001和004两个记录都存在于C表
select * from C where in ('001', '004')
同意,Id里的子项目是有限制的,如果不要这个限制,in就要用子查询。
你这里只要确定需要关联那个表的话,就可以直接做表关联就可以了,不需要用in呀比如现在看D表的记录select D.* from A, B, D where D.id=A.id and A.refid=B.refid and B.tab = 'D';这样行不行呀。