从表中选择字段名称,以从另一个表中选择值 [英] Select Fields name from a table, to select values from another table
问题描述
问题是我有2个表格
表格1
TYPE |价值
--------------------
1 | NUM3
2 | NUM4
1 | NUM5
1 | NUM6
2 | NUM7
表2
NUM1 | NUM2 | NUM3 | NUM4 | NUM5 | NUM6 | NUM7
----------------------------------------- -----------
我只想选择字段在表2中,表1中存在名称和类型为1,如果我从表1中的任何行改变类型,则自动更改表2中的查询(字段)
感谢您的时间和帮助!!!
THE PROBLEM IS THAT I HAVE 2 TABLES
TABLES 1
TYPE | VALUES
--------------------
1 | NUM3
2 | NUM4
1 | NUM5
1 | NUM6
2 | NUM7
TABLE 2
NUM1 | NUM2 | NUM3 | NUM4 | NUM5 | NUM6 | NUM7
----------------------------------------------------
I JUST WANT TO SELECT THE FIELDS IN TABLE 2, THAT FIELDS NAME EXIST IN TABLE 1 AND TYPE IS 1. AND IF I CHANGE THE TYPE FROM ANY ROW IN TABLE 1, AUTOMATICALLY CHANGE THE QUERY (FIELDS) FROM TABLE 2
THANKS FOR YOUR TIME AND HELP!!!
推荐答案
/ **
字段列表表格
id类型值列表
1 1 CID
2 1 cno
3 2 Att
4 2文件
5 1 courseid
字段类型1有一张桌子
字段是类型2有另一个表
** /
声明@column_name varchar(100)
声明@column_names varchar(100)
DECLARE @first_loop位
SET @column_names =''''
SET @first_loop = 0;
声明c CURSOR FOR
选择值列表Fr. om fieldlist其中type = 1
打开c
从c INTO @column_name获取下一个
而@@ FETCH_STATUS = 0
BEGIN
IF @first_loop = 0
BEGIN
SET @column_names = @column_name;
SET @first_loop = 1;
print''1''+ @column_name
END;
ELSE
BEGIN
SET @column_names = @ column_names +'',''+ @column_name;
print @column_name
END;
FETCH NEXT FROM c into @column_name;
END
关闭c
deallocate c
SELECT @column_names
DECLARE @sqltext varchar(max)
SET @sqlText = N''SELECT TOP 10''+ @column_names +''FROM dbo.TBL_TEST''
Exec(@sqlText)
/**
FIELD LIST TABLE STRU
id type valueslist
1 1 CID
2 1 cno
3 2 Att
4 2 document
5 1 courseid
fields are type 1 have one table
fields are type 2 have another table
**/
Declare @column_name varchar(100)
declare @column_names varchar(100)
DECLARE @first_loop bit
SET @column_names = ''''
SET @first_loop = 0;
Declare c CURSOR FOR
Select valueslist From fieldlist Where type=1
Open c
Fetch Next from c INTO @column_name
While @@FETCH_STATUS = 0
BEGIN
IF @first_loop = 0
BEGIN
SET @column_names = @column_name;
SET @first_loop = 1;
print ''1'' + @column_name
END;
ELSE
BEGIN
SET @column_names =@column_names+ '', '' + @column_name;
print @column_name
END;
FETCH NEXT FROM c into @column_name;
END
close c
deallocate c
SELECT @column_names
DECLARE @sqltext varchar(max)
SET @sqlText = N''SELECT TOP 10 '' + @column_names + '' FROM dbo.TBL_TEST''
Exec (@sqlText)
这篇关于从表中选择字段名称,以从另一个表中选择值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!