2013-03-14 82 views
0

我有一个reason_id外键的表值搜索的表。我需要将其映射回其主表。我已经在数据库中搜索了匹配/相似的列名,但我无法找到表。基于表中包含的

我会与reason_id相关值的列表。我想搜索包含我拥有的列表的表。任何帮助,将不胜感激。

这是我正在运行搜索栏查询:

select 
    t.name as Table_Name, 
    SCHEMA_NAME(schema_id) as schema_name, 
    c.name as Column_Name 
from 
    sys.tables as t 
    inner join 
    sys.columns c 
    on 
    t.OBJECT_ID = c.OBJECT_ID 
where 
    c.name like '%reason%' 
+1

您的表的定义随走,不包含一个指向回源表的外键约束? – woemler 2013-03-14 14:36:40

+0

这是一个好的开始。接下来,将按表格分组的输出格式化为在匹配过滤器的表格的所有列中搜索的有效SQL。编写SQL来创建有效的SQL是改善SQL理解的好方法;回电遇到任何特定的困难。 – 2013-03-14 14:38:42

+0

我相信没有表,其中LIKE“%原因%” ...... – MattW 2013-03-14 14:38:57

回答

0

没有找到其他表中的相关数据没有简单的方法。

我用的工具,如ApexSQL SearchSQL Search尝试。两者都是免费的,您不会因为这些问题而出错。

如果你想与SQL做才确定具有相同的数据类型的所有表中的所有列。为此,请使用sys.columns, sys.types and sys.tables视图。一旦你发现所有的列只是尝试开始为每个表编写查询,直到找到合适的列。

我会像这样的东西

select COUNT(*) 
from tableX 
where tableX.matchedColumn in 
(
    -- take 100 or more random rows from the original table 
    -- if result gives you a number that is near to the number of values listed here then you are most probably on the right track 
) 
相关问题