如何使用 sql 语句 遍历 数据库里的表

来源:百度知道 编辑:UC知道 时间:2024/06/02 16:36:40
我要遍历一个数据库(test)里的所有表,判断哪个表里有主键aaa和已知表(表1)里的外键aaa关联,
然后返回那个主键是aaa表里的所有str字段

请问sql语句该怎么写
我把表给出来吧
是MSSQL
表:SampleDetails
1 每款单件用料报表主键 lngSampleDetailsID 主键
2 款号 lngYyGlAID 外键
3 客户 lngCustomerID 外键

表:YyGlA
1 样衣管理表A主键 lngYyGlAID 25主键
2 日期 lngSampleYM 12
3 日期 strSampleYM 25
4 内部编号 strInnerNo 25
5 客户 strCustomerID 25外键
6 客人款号 strCode 25
除了str开头的是nvarchar类型,其他是int类型
我要根据SampleDetails表里和外键lngYyGlAID字段查找关联表里的
strCode字段的所有信息(也就是YyGlA表),表的命名规则有规律,就是按主键字段从第四个开始(主键是lngName,表名就是Name;主键是strName的话,表名就是Name)

---找出这个表中所有类型为varchar型的字段
---不知道你的str型需要对应哪几种类型,只以varchar型为例,其他类型可以查找systypes
---将所需要的type添加到最后的type筛选语句中
select t2.name from
(
---找到主键为aaa,并且与表中aaa字段的外键相对应的表
select b.id
from
(
---找出表1中aaa外键所对应的主表和主键
select rkeyid,rkey
from
(
---找出表1中的所有外键
select a.id,b.* from sysobjects a inner join sysforeignkeys b
on a.id=b.fkeyid
where xtype='U' and name='表1'
)c
inner join
(
---找出aaa字段所在的所有表
select id from syscolumns
where name='aaa'
)d
on c.id=d.id
)a
inner join
(
---找出aaa字段所在的所有表
select id from syscolumns
where name='aaa'
)b
on a.rkeyid=b.id
)t1
inner join syscolumns t2
on t1.id=t2.id
where t2.type=39

回答修改:
根据需求,修改如下
declare @name varchar(255)
---找出主表的名字
set @name=
(select t2.name from
(---找出SampleDetails中的lngYyGlAID外键所对应的主表
---有可能SampleDe