2015-03-03 68 views
0

假設我們在多個表格中有電子郵件廣播所需的數據,並且我們需要將來自不同表格的(姓名,電子郵件)等一些常用字段信息用於電子郵件廣播的臨時表等等。 表Eaxmples EmployeeStudentClassParents表等過濾來自多個表格的數據並插入臨時表格

讓我們說,我們需要將電子郵件發送給了差的情況

  1. 所有學生
  2. 5年級學生只有
  3. 員工只有
  4. 父母只有
  5. 員工,家長
  6. 3級,5級,等級只有

6名學生,我們可以有多種組合。我一直認爲這是一個搜索類似的例子,但找不到任何相關的例子。

樣本表結構

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

我將不勝感激指針或做法,我們不能拿,最大的問題是如何發電機密封動態查詢從不同的表這使相關的數據可以用於發送電子郵件來選擇通知或暗示等。

+0

我認爲這個問題需要更多的細節,才能提供真正有用的幫助。你爲什麼使用臨時表?您是否要查詢一次收集的表格以收集電子郵件收件人列表?你可以針對不同類型的收件人運行單獨的查詢嗎?當你說動態查詢時,你的意思是動態SQL嗎?動態SQL是否是一項要求? – DCaugs 2015-03-03 13:30:44

+0

這麼多不相關的標籤。 – Kritner 2015-03-03 13:30:48

+0

@DCaugs,我可能不需要臨時表,如果我可以根據用戶選擇生成動態查詢。選擇可能會有所不同,我可能沒有說清楚。簡單地說,我想知道如何根據問題中提到的方案從不同的表中獲取電子郵件,姓名,電話號碼。 – Learning 2015-03-03 13:37:24

回答

1

這實際上歸結爲應用程序體系結構而不是數據結構,儘管您可能也會從這些表的外觀改進數據結構。

最終,您將向最終用戶展示訪問數據的選項。在將請求發送到數據庫表之前,您需要儘可能縮小前端的選擇範圍。您可以提出最終請求的範圍越窄,數據庫查詢就越簡單。

構建多個動態SQL查詢可能是一個選項。開始時這樣做更難,但每次調用時最有可能採購最有效,最窄的執行計劃。

調用表格式存儲過程將是另一種方法 - 例如,用戶請求前端的所有教師和所有父母電子郵件地址,然後依次調用一個關注教師表的proc和一個單獨的父表,以適當的參數集中proc,並將數據返回到前端。

在一天結束時,儘可能簡化您的數據結構(將用戶組合成單個用戶表,而不是將多個用戶類型數據冗餘存儲在多個表中)有關數據庫的常規形式here)儘可能靈活地處理前端查詢,並準備隨着您發現與最初查詢設計不匹配的最終用戶訪問模式進行調整和調整。

不幸的是,有很多變數和沒有銀子彈。這就是說,確定具體的問題,你正試圖解決,然後問自己爲什麼這是一個問題開始,會讓你走到一個解決方案的道路。