在select语句中选择记录详细信息及其自己的表计数,其中每个记录都有自己的表

时间:2013-09-09 05:04:47

标签: sql sql-server

我有一个包含recordidrecord name的表,以及一个带有相应表名的额外列。每条记录都有自己的表。现在我想在sql中使用select query选择record nameid及其相应的表计数。请帮帮我..

谢谢

我有一个名为'records'的表,如

recordid名称描述表名称     ------------------------------------------------      1记录1 description1 tb_name1

 2       record2      description1     tb_name2

每个记录都有一个表。例如,记录1的表名为tb_name1,记录2的表名为tb_name2

tb_name1中的

id recordid name dob address entrydate

1    1           xxx      13-6-2011   xxx           7/9/2013
2    1           xxx      13-6-2011   xxx           8/9/2013
3    1           xxx      13-6-2011   xxx           8/9/2013
4    1           xxx      13-6-2011   xxx           9/9/2013

与tb_name2中的内容类似

id recordid name dob address entrydate

1    2           xxx      13-6-2011   xxx           6/9/2013
2    2           xxx      13-6-2011   xxx           7/9/2013
3    2           xxx      13-6-2011   xxx           8/9/2013

我想要一个像

这样的结果

记录名称描述计数

1 record1 description1 4  2记录2说明1 3

4,3是其对应表的行数。

1 个答案:

答案 0 :(得分:0)

如果您可以容忍计数不能保证100%准确 1 ,那么您可以加入sys.partitions目录视图,该视图描述了它因此rows列:

  

表示此分区中的大致行数。

所以你有一个这样的联接:

select recordid,name,description,rowcount
from
   [unnamedfirsttableinquestion] t
        inner join
  (select object_id,SUM(rows)
    from sys.partitions group by object_id) u (oid,rowcount)
     on
         u.oid = OBJECT_ID(t.tablename)

1 在实践中,您通常可以容忍这一点 - 或者:

  • 该表不经常更新,在这种情况下,行数很可能是最新的,或者,
  • 该表经常更新,在这种情况下,当您知道答案时,它可能会发生变化。