請參閱以下第1編輯從@Gordon Linoff檢索項目類型,它們的亞型,而這些類型的計數和亞型
的第二編輯/凌亂的解決方案
原來的問題
見底的答案如下我有3張桌子;
tblOrganisations
tblOrganisationTypes
tblOrganisationSubTypes
一個組織可以有一個類型,而有些類型可以有一個亞型
我試圖讓類型和子類型的列表和計數,但我有與計數,其中的麻煩一個類型有一個子類型。
以下查詢和代碼;
<CFQUERY NAME="RetrieveAllOrganisationTypes" DATASOURCE="#strDev#">
SELECT tblOrganisations.tblOrganisationTypes_ReferenceID , COUNT(tblOrganisations.tblOrganisationTypes_ReferenceID) AS TypeCount , COUNT(tblOrganisations.tblOrganisationSubTypes_ReferenceID) AS SubTypeCount , tblOrganisationTypes.OrganisationType , tblOrganisationSubTypes.OrganisationSubType
FROM ((tblOrganisations
LEFT JOIN tblOrganisationTypes ON tblOrganisations.tblOrganisationTypes_ReferenceID = tblOrganisationTypes.ReferenceID)
LEFT JOIN tblOrganisationSubTypes ON tblOrganisations.tblOrganisationSubTypes_ReferenceID = tblOrganisationSubTypes.ReferenceID)
GROUP BY tblOrganisations.tblOrganisationTypes_ReferenceID , tblOrganisations.tblOrganisationSubTypes_ReferenceID
ORDER BY tblOrganisationTypes.OrganisationType , tblOrganisationSubTypes.OrganisationSubType
</CFQUERY>
<CFOUTPUT QUERY="RetrieveAllOrganisationTypes" GROUP="OrganisationType">
#OrganisationType# (#TypeCount#)<BR>
<CFIF OrganisationSubType IS NOT ""><CFOUTPUT GROUP="OrganisationSubType">-- #OrganisationSubType# (#SubTypeCount#)<BR></CFOUTPUT></CFIF>
</CFOUTPUT>
Get me this;
AFFILIATED (2)
ASSOCIATE (15)
FULL (10)
-- operator (10)
-- manufacturer (4)
-- owner (108)
-- survey company (4)
-- supplier (4)
GOVERNMENT (5)
MISCELLANEOUS (3)
SCIENCE (4)
但是,你看,完整計數 - 10 - 是錯誤的。它應該是130!對於沒有子類型的類型,計數是正確的。子類型計數是正確的。我已經試過各種但我沒有在任何地方得到:(
任何幫助將不勝感激!:)
1日編輯
在從@Gordon Linoff的幫助下,加入WITH ROLLUP,刪除ORDER BY和下面的代碼;
<CFOUTPUT QUERY="RetrieveAllOrganisationTypes" GROUP="OrganisationType">
#OrganisationType# (#TypeCount#) #SubTypeCount#<BR>
<CFIF OrganisationSubType IS NOT ""><CFOUTPUT GROUP="OrganisationSubType">-- #OrganisationSubType# (#TypeCount#) #SubTypeCount#<BR></CFOUTPUT></CFIF>
</CFOUTPUT>
我現在得到;
AFFILIATED (2) 2
ASSOCIATE (15) 15
FULL (10) 10
-- operator (10) 10
-- manufacturer (4) 4
-- owner (108) 108
-- survey company (4) 4
-- supplier (4) 4
-- (130) 130
GOVERNMENT (5) 5
MISCELLANEOUS (3) 3
SCIENCE (4) 4
(159) 159
所以,你看到我得到130,但我怎麼得到130的滿?!
第二編輯/凌亂的解決方案
,所以我想這是一個有點混亂的解決方案,但它的工程!
以下輸出代碼;
<CFOUTPUT QUERY="RetrieveAllOrganisationTypes" GROUP="OrganisationType">
<CFOUTPUT GROUP="OrganisationSubType">
<CFIF OrganisationSubType IS "" AND OrganisationType IS NOT "">#OrganisationType# (#TypeCount#)<BR></CFIF>
</CFOUTPUT>
<CFOUTPUT GROUP="OrganisationSubType">
<CFIF OrganisationSubType IS NOT "" AND OrganisationType IS NOT "">--#OrganisationSubType# (#SubTypeCount#)<BR></CFIF>
</CFOUTPUT>
</CFOUTPUT>
給我;
AFFILIATED (2)
ASSOCIATE (15)
FULL (130)
--operator (10)
--manufacturer (4)
--owner (108)
--survey company (4)
--supplier (4)
GOVERNMENT (5)
MISCELLANEOUS (3)
SCIENCE (4)
我敢肯定,有可能是一個更清潔的方式來做到這一點,如果有人知道它我打開的建議,但現在 - 這是工作:)
感謝您的幫助,我從來沒有聽說過WITH ROLLUP - 所以我會研究它。我嘗試了WITH ROLLUP,但我得到了一個錯誤 - 「錯誤執行數據庫查詢。錯誤的使用CUBE/ROLLUP和ORDER BY」但我發現如果我刪除了ORDER BY的東西,它的工作原理 - 計數都很好:) – luke
ahhhh ...從該鏈接到文檔; '使用ROLLUP時,不能使用ORDER BY子句對結果進行排序。換句話說,ROLLUP和ORDER BY是互斥的。 ' – luke
對不起,我錯了:(計數是不正確的 - 我越來越; ASSOCIATE(15) 全部(108) - 所有者(108) - 運營商(10) - 製造商(4) - 系統供應商(4) - 調查公司(4) 政府(5) 科學(4) AFFILIATED(2) 雜項(3) – luke