2009-10-30 104 views
1

我有一個涉及2個邏輯表的多對多表關係。涉及家庭關係的棘手的SQL查詢問題

是連接到一個關係表上primaryID是加入到關係表上ReciprocalID

這樣做的目的是爲了顯示數據庫中的家庭關係記錄表的 二審

記錄表。每個主記錄表在關係表中有一行或多行,顯示此人在數據庫中具有的其他家庭關係。

我的任務是設法建立一個聯繫人列表,其中包括顯示每個參加這所學校的孩子的名字以及他們的父母和聯繫信息。

我已經到了能夠向每位父母下方展示孩子的地步,但現在我必須找到一種方法將這些孩子合併在一起。

因爲我無法控制這個數據庫(它的Education Edge 7)的設計,所以我製作了一個單獨的數據庫來存放我的報告的查詢和視圖。我正在從事這項工作的學校只能訪問CR 8.5。

現在我有我的頂級組在CR作爲recordstable的姓氏,我的第二組是在recordstable的全名。我有一個子報表,可以記錄所有的孩子記錄。

我在我的主視圖(上面描述的)中將'女兒'和'兒子'轉換爲子女,'母親'或'父親'轉換爲父母時使用了一種情況。

希望這沒有太多漫遊。如果您需要更多信息,請詢問。

SELECT  dbo.vwEA7RelationshipsTableView.PRIMARYID, 
      dbo.vwEA7RecordsTableView.LASTNAME AS PRIMARYLASTNAME, 
      dbo.vwEA7RecordsTableView.FIRSTNAME AS PRIMARYFIRSTNAME, 
      dbo.vwEA7RecordsTableView.NAMEFORDISPLAY AS PRIMARYNAME, 
      CASE dbo.vwEA7RelationshipsTableView.PRIMARYDESC 
       WHEN 'Father' THEN 'Parent' 
       WHEN 'Mother' THEN 'Parent' 
       WHEN 'Son' THEN 'Child' 
       WHEN'Daughter' THEN 'Child' 
       ELSE dbo.vwEA7RelationshipsTableView.PRIMARYDESC 
       END AS PRIMARYDESC, 
      dbo.vwEA7RelationshipsTableView.RELATIONID, 
      vwEA7RecordsTableView_1.LASTNAME AS RELATIONLASTNAME, 
      vwEA7RecordsTableView_1.NAMEFORDISPLAY AS RELATIONNAME, 
      dbo.vwEA7RelationshipsTableView.RELATIONDESC 
FROM   dbo.vwEA7RelationshipsTableView INNER JOIN 
         dbo.vwEA7RecordsTableView ON 
         dbo.vwEA7RelationshipsTableView.PRIMARYID = dbo.vwEA7RecordsTableView.ID INNER JOIN 
         dbo.vwEA7RecordsTableView AS vwEA7RecordsTableView_1 ON 
         dbo.vwEA7RelationshipsTableView.RELATIONID = vwEA7RecordsTableView_1.ID 

TableViews實際上只是從主數據庫中重新創建主表。

+0

有什麼問題嗎? – dotjoe 2009-10-30 18:15:08

+0

「我已經到了能夠向每位家長展示孩子的地步,但現在我必須找到一種方法將這些孩子融合在一起」 - 你能描述一下你的意思嗎? – MartW 2009-10-30 18:55:09

+0

關係表中的每個記錄都有幾種可用的描述。每個記錄在Relationtable中都有一個或多個記錄,用於說明主ID與關係ID的關係。所以: 1 Jane Doe的母親23李四JR兒子 1 Jane Doe的母親24 Jane Doe的JR女兒 1李四老婆25李四丈夫 25李四丈夫1李四老婆 25李四父親23李四JR兒子 那就是原始數據。我把搞得爸爸媽媽=母體和子子=兒童 – ecathell 2009-10-30 19:18:03

回答

0

我已經解決了這個問題。我的sql代碼很好,這是格式化我的內部參數Crystal和一些創意分組的問題。

+0

不要忘記,如果你想出來,你可以把它標記爲正確的答案。 :) – Dusty 2009-11-02 15:24:17

+0

是的,我那天試過,但它告訴我,我不得不等待2天...現在就做... – ecathell 2009-11-02 17:35:28