从多个表中过滤数据并插入临时表

时间:2015-03-03 13:09:37

标签: php html sql asp.net sql-server

假设我们在几个表中有电子邮件广播所需的数据,我们需要使用一些常见的字段信息,如(名称,电子邮件)从不同的表到电子邮件广播的临时表等。 表Eaxmples EmployeeStudentClassParents表等

我们说我们需要发送电子邮件以用于不同的场景

  1. 所有学生
  2. 仅限5年级学生
  3. 仅限员工
  4. 仅限家长
  5. 员工,父母
  6. 仅限3年级,5年级,6年级学生
  7. 我们可以有几种组合。我一直在想这个搜索类似的例子,但找不到任何相关的例子。

    样本表结构

    Employee/Teacher (ID, Name, Email, Phone..)
    Student (ID,Name,Email,Phone..)
    Class(ID,ClassName)
    Subject (ID, SubjectName, GradeID)
    Parent(ID,Name,Email,Phone...)
    

    我很感激我们不能采用的指针或方法,最大的问题是如何为此生成动态查询,以便可以选择来自不同表格的相关数据来发送电子邮件通知或暗示等。

1 个答案:

答案 0 :(得分:1)

这实际上归结为应用程序体系结构而不仅仅是数据结构,尽管从这些表的外观来看,您也可以改进数据结构。

最终,您向最终用户展示了访问数据的选项。在将请求发送到数据库表之前,您需要在前端尽可能缩小其选择范围。您可以做出最终请求的范围越窄,数据库查询就越简单。

构建多个动态SQL查询可能是一种选择。这最初很难处理,但每次调用时很可能会获得最有效,最简单的执行计划。

调用以表为中心的存储过程将是另一种方法 - 例如用户请求前端的所有教师和所有父电子邮件地址,后者又调用教师表聚焦过程和具有适当参数的单独父表聚焦过程,并将数据返回到前端。

在一天结束时,尽可能简化数据结构(将用户组合到单个用户表中,而不是跨多个表的多个用户类型数据冗余存储。有关数据库here中的常规表单的更多信息) ,尽可能地缩小前端查询的灵活性,并随时发现调整和调整,因为您发现最终用户访问模式与初始查询设计不符。

遗憾的是,有很多变数而且没有银子弹。话虽这么说,确定你试图解决的特定的问题,然后问自己为什么这是一个问题,开始时,会让你走得很远一个办法。