2013-05-27 124 views
0

我需要將多個父類型中的一個指定給單個子項目。我遇到的問題是,在Access 2010 Web數據庫中,我無法創建聯合查詢以將所有潛在父母(從多個表中)放入單個下拉列表框中。Access 2010 Web數據庫中UNION查詢的替代

我對這一切都很有點綠色,可能會完全錯誤。我非常樂於接受建議。這裏是我的例子:

  • 合同是分包合同的母公司。
  • 合同和分包合同都有工作說明(SoW)。
    • 合同和分包合同都可以是SoW的直接父母。
  • 每頭母豬都只有一個父
    • 母豬分成幾段(不是過於間接)

隨着聯合查詢我將建立數據庫是這樣的:

  • 合同表
  • 分包合同ta ble
  • 合同和分包合同表
  • 查找來自SoW表的合併表,以便從單個數據源中選擇合同或分包合同作爲父項。

這裏的問題是我無法在Web數據庫中創建聯合查詢。

我唯一的其他想法是建立數據庫以這種方式:

  • 合同表
  • 分包表
  • 合同母豬表
  • 分包動物遺傳資源狀況表

這種設計(使用兩個表)可能更有效地用於數據輸入,因爲當a試圖使用聯合表。我不確定,因爲我還沒有嘗試過。使用此方法,Access報表應該能夠將分包合同綁定到父合同,並在詳細信息部分中顯示所有數據。但是,這種設計仍然意味着我將使用兩個獨立的表格來存放相同的數據。

回答

0

我會把這兩個合約表連成一個表,將是這個樣子:

CREATE TABLE ContractTable(
    ContactID INTEGER NOT NULL PRIMARY KEY, -- Possibly an autonumber 
    [various contract columns], 
    ParentContract INTEGER 
); 

注意,我知道這是不是訪問友好的語法。我通常使用更大的數據庫,但你應該能夠明白。

然後您的查詢找到父合同是SELECT ... FROM ContractTable WHERE ParentContract IS NULL

查找子合同SELECT ... FROM ContractTable WHERE ParentContract IS NOT NULL

我對這種方法的關注是,如果您需要搜索合約鏈(即D的C父代的B父代的父代,並且您需要從A到D),則可以運行到遞歸SQL我不認爲Access可以處理。你必須這樣做VBA代碼。

+0

Yarr和Web數據庫不能做VBA代碼......大聲笑。相當兔子洞。我*相信*只會有「B的父母」。 「ParentContract」字段然後引用它所在表中的ContractID值嗎? – Shrout1