代码之家  ›  专栏  ›  技术社区  ›  MartinHN

SQL仅选择在单独的元数据表中作为行存在的列

  •  0
  • MartinHN  · 技术社区  · 15 年前

    在我的应用程序中,任何用户都可以配置要显示、重新排序和调整列大小的列。为了保存每个用户设置,我有几个表。

    其中一个称为usercolumns,如下所示:

    Id | UserId | ColumnName | DefaultWidth | Width | SortOrder
    

    有什么办法吗? 没有 动态生成选择字符串并执行它,以便我可以从表中选择列,但只选择该特定用户的user columns表中存在的列?

    所以像applicationerrors这样的表:

    Id | ExceptionMessage | StackTrace | LogDate
    

    ID为1的用户选择了以下列: stacktrace,日志日期。

    所以我想得到一个结果集,只显示stacktrace和logdate,按照usercolumns表中sortorder列的值排序。

    这有可能吗?

    1 回复  |  直到 14 年前
        1
  •  3
  •   James Black    15 年前

    为了使用未知列进行选择,您需要动态生成查询并执行它。

    如果您只有几个用户,那么您可以创建一个视图,并使用创建一个将视图链接到用户的表,并且您可以基于该视图进行选择,但是,您的应用程序将希望这样做,因为它可以使用变量表动态创建查询。