,這是表結構鑽取數據的ColdFusion
產品表
uid_product(唯一ID)
txt_prod_name(產品名稱)
表名稱:tbl_products
產品Featu RES
uid_feature(唯一ID)
txt_feature_name(功能名稱)表名稱:tbl_features
分配產品特點
uid_prodf(唯一ID)
uid_prodf_prodid(外鍵to uid_product)
uid_p rodf_featid(外鍵uid_features)
表名:tbl_prod_features
一種產品可以有很多的功能,所以使用tbl_prod_features表。
我創建了以下查詢,以獲得結果;
<cfquery name="getFeatureProducts" datasource="#application.dsn#">
SELECT uid_product, txt_prod_name
FROM dbo.tbl_products
WHERE uid_product IN (SELECT (dbo.tbl_product_features.uid_prodf_prodid)
FROM dbo.tbl_product_features
WHERE uid_prodf_featid IN (<cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#arguments.uid_features#" list="yes">))
ORDER BY dbo.tbl_products.txt_prod_name
</cfquery>
這適用於獲取與最終用戶選擇的功能相關的所有產品。然而,我需要實現的是以下內容:
如果用戶選擇;
特點A = 5成的產品顯示(3超過了這些產品的5包含特徵B)
如果用戶隨後選擇;
特徵B = 3產品
與目前使用的運營商還是會恢復5個產品查詢。
我的第一個想法是創建一個動態where語句添加AND運算符,但是uid_prodf_featid = 5 AND uid_prodf_featid = 6總是會產生0個結果。
我的第二個想法是從第一次鑽取產生id的數組,即得到前5個產品的id,然後將它們傳遞給查詢,然後深入查詢這些特徵,這些工作和正確的結果被獲得。
但是,用戶有能力刪除功能(以任何順序),所以我會不知何故需要跟蹤產品ID的時間和時間,他們被添加和刪除。
我相信我過於複雜,但任何幫助,將不勝感激。
謝謝您!你已經拯救了我的聖誕節!現在我一直在複雜化它!這是一個偉大的網站和偉大的人誰使用它!這工作完美!!!!!!!!!!!!!謝謝 – 2011-12-23 21:26:48
歡迎您和聖誕快樂:) – Leigh 2011-12-23 21:45:44
聖誕快樂! – 2011-12-23 21:48:55