2012-04-17 106 views
2

我遇到了我需要做的加入的問題 - 問題出在這裏: 我有一個17個銷售人員的數據庫,每個銷售人員都有自己的總計,例如費用,預付款和佣金。 在我的數據庫中,大約有200位顧客可以擁有多達3名銷售員。這是少數,但確實存在。每位銷售人員都在該帳戶的發票上付款。我的一些銷售人員都只是2號銷售人員上的帳戶,這意味着他們永遠第一,所以如果我不加入一個營業員的發票 - 他沒有任何發票,因爲他從來都不是業務員1 我可以拉作爲推銷員2發票時,我只是在看發票,但每8周我需要加入他的銷售人員1的費用,以他的銷售員2發票。我無法得到它的工作或想出一個解決方案。 我有一個銷售人員查詢,以便每8個星期,我可以叫業務員數100,看他的費用 我有發票/付款查詢,看看他有什麼付款 - 但我在那裏我想帶來的推銷員第三查詢加上他的付款不起作用,因爲他是第一個開支銷售員和發票/付款中的第二個推銷員 我已經嘗試了SQL中的每一種方式,似乎無法做到正確。如何編寫聯接查詢?

有沒有一種方法,我可以加入由業務員查詢salesman1對slmn1或slmn2或slmn3發票/付款查詢?

這個例子太複雜:

FROM qryFinalWeek 
INNER JOIN QryFW ON qryFinalWeek.SLMN = QryFW.SLMN2 OR QryFW.SLMN3 OR QryFW.Salesrep1 
WHERE (((QryFW.PDATE)=[FDATE]+4)); 

這個例子僅僅是給的發票,他的第一個銷售員,所以我不能得到任何佣金,如果他是第二個:

WHERE (((qryFinalWeek.SLMN)=[Forms]![frFWDATE]![Text0]) AND ((QryFW.PDATE)=[FDATE]+4)) OR (((QryFW.SLMN2)=[Forms]![frFWDATE]![Text0]) AND ((QryFW.PDATE)=[FDATE]+4)) OR (((QryFW.SLMN3)=[Forms]![frFWDATE]![Text0]) AND ((QryFW.PDATE)=[FDATE]+4)) 

任何反饋感謝!

回答

2

的數據結構所產生的問題爲您服務。我的建議是從客戶表中刪除銷售人員(假設每個客戶的數據不僅僅是關聯的銷售人員),並將其添加到名爲Salesmen_Customers或類似的新表中。此表將包含對銷售人員和客戶之間的許多關係的許多

這是當前的結構

old data structure

這裏是新的結構

new data structure

這應該簡化查詢結構顯着。如果您的銷售人員的深度更深,這也可以輕鬆擴展。如果您有興趣進一步閱讀關於數據庫設計的主題,我會推薦SQL anti patterns。如果你真的嫁給了你的DB結構,你可以查詢你的出路,但我不會推薦它。