我有一个关于 ColdFusion 和 Mysql 的问题。我有两个表:PRODUCT 和 PRODUCT_CAT。我想列出包含一些特殊产品的类别,这些产品标记为:IS_EXTRANET=1
。所以我写了这个查询:
<cfquery name="get_product_cat" datasource="#dsn1#">
SELECT PC.PRODUCT_CAT,PC.PRODUCT_CATID,PC.HIERARCHY
FROM PRODUCT_CAT PC LEFT OUTER JOIN PRODUCT P ON P.PRODUCT_CATID=PC.PRODUCT_CATID
WHERE P.IS_EXTRANET=1
GROUP BY PC.PRODUCT_CATID,PC.PRODUCT_CAT,PC.HIERARCHY
ORDER BY PC.HIERARCHY,PC.PRODUCT_CAT
</cfquery>
和输出:
<select name="product_catid">
<option value="">All Categories</option>
<cfoutput query="get_product_cat">
<option value="#product_catid#" <cfif isdefined("attributes.product_catid") and len(attributes.product_catid) and (attributes.product_catid eq product_catid)>selected</cfif>><cfloop from="2" to="#listlen(hierarchy,'.')#" index="pc"> </cfloop>#product_cat#</option>
</cfoutput>
</select>
但有一个问题。在product_cat
表格内,有 2 种类别:“under”和“sub”。所以在每个“下”类别中,没有产品,但有“子”类别。当我尝试列出仅包含具有is_extranet=1
定义的产品的类别时,没有列出“下”类别。但我也希望列出“下”类别。换句话说,如果“子”类别内是具有定义的产品is_extranet=1
,则显示“下”类别,然后显示具有这些产品的子类别。我希望我很清楚:)
另外,“下”类别的层次结构如下所示:100 和子:100.001