【问题标题】:Querying multiple tables having the same column name查询具有相同列名的多个表
【发布时间】:2012-02-25 10:10:55
【问题描述】:

我在一个数据库中有大约 20 个表,列名相同,即

教师姓名、学科、班级等...

现在我想一次查询所有表以显示所有教师姓名为:“John Travolta”的行

我该怎么做?我在一些帖子中看到 UNION 会是一种方法,但是由于有 20 个甚至更多的表,我希望有更好的方法来做到这一点......

顺便说一句,我在 WEBMATRIX 中使用 SQL SERVER COMPACT....

【问题讨论】:

    标签: asp.net database sql-server-ce webmatrix


    【解决方案1】:

    除了合并表的所有查询结果之外,想不出其他方法。 你真正需要问自己的问题是,为什么你有这么多表,所有表中都存储了相同的数据?我认为这是一种不好的做法,您应该有一个表,其中包含一个可以将它们分开的字段,甚至可以将表扩展到不同类型的行。 但底线 - 代表相同信息的每个数据都应存储在一个表中。

    【讨论】:

    • :感谢您的回复。好吧,我实际上拥有一所大学 20 个不同部门的数据,因此对所有人的定义都是一样的......
    • 那么,为什么不将它合并到一个大表中,并保留一个SectionID的外键来区分不同的部分呢?
    • +1 获取设计建议。每个部门都有一张桌子不是处理事情的好方法。为部门/部分创建一个表并使用它在一个表中区分它们是比 UNION 更好的方法。
    【解决方案2】:

    如果您想以纯 SQL 方式执行此操作,则必须使用 Union

    有一些使用 EF、继承和一些配置的技巧可以让您通过一个集合访问具有相同列的多个表。但我不是这种方法的专家。

    此外,您还可以将所有表中的所有列组合在一起。但是 SQL Server CE 不支持视图。如果您至少要将数据库迁移到 SQL Server Express,则可以这样做。

    最后,您可以使用 stringbuilder 在您的 asp.net 应用程序中生成 SQL 语句。

    【讨论】:

    • 谢谢 :) 天哪!似乎很多! :P 无论如何,非常感谢您的回复,然后尝试与 Union 本身合作....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2023-04-07
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多