2015-05-31 47 views
-1

我有以下各表數據庫:與母體MS Access數據結構問題/兒童自連接

  • BeliefsT

    • BeliefID(自動編號)
    • 信仰(短文本)
  • ReasonsToAgreeT

    • ArgAgreeID(自動編號)
    • ConclusionAID(查找到BeliefsT)
    • ReasonToAgreeID(另外一個查找到BeliefsT)
  • ReasonsToDisagreeT

    • ArgDisagreeID(自動編號)
    • 結論DID(也是對信仰的查詢)
    • ReasonToDisagreeID(另外一個查找到BeliefsT)

問題1:我不能指望一個ConclusionAID已在ReasonsToAgreeT表被選擇的次數。

這是我第一次嘗試:

SELECT BeliefsT.Belief, ReasonsToAgreeT.ReasonToAgreeID, ReasonsToDisagreeT.ReasonToDisagreeID 
FROM (BeliefsT 
     LEFT JOIN ReasonsToAgreeT 
      ON BeliefsT.BeliefID = ReasonsToAgreeT.ConclusionAID 
    ) LEFT JOIN ReasonsToDisagreeT 
      ON BeliefsT.BeliefID = ReasonsToDisagreeT.ConclusionDID 
GROUP BY BeliefsT.Belief, ReasonsToAgreeT.ReasonToAgreeID, ReasonsToDisagreeT.ReasonToDisagreeID 
ORDER BY BeliefsT.Belief; 

它只是有點讓你看所有的值,但不會做任何事情......

我也只是看一個表在一段時間,但並沒有真正得到我任何東西:

SELECT ReasonsToAgreeT.ConclusionAID, Count(ReasonsToAgreeT.ReasonToAgreeID) AS CountOfReasonToAgreeID 
FROM ReasonsToAgreeT 
GROUP BY ReasonsToAgreeT.ConclusionAID; 

這是closesest我能,我的報告的數據源,但它計數重複空值,因爲我的關係搞砸:

SELECT BeliefsT.Belief, ReasonsToAgreeT.ReasonToAgreeID, ReasonsToDisagreeT.ReasonToDisagreeID 
FROM (BeliefsT 
     LEFT JOIN ReasonsToAgreeT 
      ON BeliefsT.BeliefID = ReasonsToAgreeT.ConclusionAID 
    ) LEFT JOIN ReasonsToDisagreeT 
      ON BeliefsT.BeliefID = ReasonsToDisagreeT.ConclusionDID; 

當我既包括同意表的原因和理由不同意表,關係得到全亂了,因爲他們都看同樣的信念表,並試圖做一個跨產品,和一切都搞砸了,我不能準確地計數同意或不同意的原因數量...

+0

請包括有問題的SQL語句,並縮小您的問題,排除非必要的部分。感謝和問候, –

+0

@AlexBell我添加了一些SQL並刪除了我的大圖最終目標,並提到了我最初的問題......我希望這有助於...... – myclob

回答

0

您的業務邏輯和問題定義有點不清楚,所以基於合格的猜測,最好的SQL查詢你出來的解決方案如下:

SELECT BeliefsT.Belief, ReasonsToAgreeT.ReasonToAgreeID, ReasonsToDisagreeT.ReasonToDisagreeID FROM (BeliefsT LEFT JOIN ReasonsToAgreeT ON BeliefsT.BeliefID = ReasonsToAgreeT.ConclusionAID) LEFT JOIN ReasonsToDisagreeT ON BeliefsT.BeliefID = ReasonsToDisagreeT.ConclusionDID; 

如果唯一的問題是Null值的錯誤計數,則添加WHERE子句Not Is Null引用各自的字段。另一種選擇是使用MS Access SQL條件運算符IIf(IsNull(SomeField), 0, 1)

希望這可能有所幫助。最好的問候,