Я пытаюсь получить правильный результат из запроса и испытываю некоторые трудности, мои продукты отображаются через их категории, подкатегории и связанные категории.Связанные категории - это то, где пользователь может связать продукты с вторичной категорией (для аналогичных продуктов).
Данные детализируются по характеристикам продукта, например, колебания или скольжения и т. Д.
РезультатДетализация функций должна заключаться в том, что если выбран вариант Swings, то должны отображаться только продукты в выбранной категории, подкатегории или связанной категории с Swings.
Конечный пользователь может затем щелкнуть другую функцию, например слайды, и результатыдолжны быть только продукты в пределах выбранной категории, подкатегории или связанной категории со свингами и слайдами.
В следующем запросе я получаю продукты со связанными категориями (это прекрасно работает) с использованием вложенного запроса:
<cfquery name="getProductList" datasource="#application.dsn#">
SELECT
p.uid_product,
p.txt_prod_name,
p.uid_prod_templteid,
p.txt_prod_metaurl,
p.txt_prod_h1,
p.txt_prod_ref,
p.mon_prod_rrp,
p.mon_prod_current,
i.txt_pimg_name,
i.uid_pimages,
i.txt_pimg_alt
FROM dbo.tbl_products
IINNER JOIN tbl_product_images i ON (p.uid_product = i.uid_pimg_prodid)
WHERE p.uid_prod_webid=<cfqueryparam cfsqltype="cf_sql_integer" value="#application.webid#">
<!---If! If arguments to uid_subcategory is defined: USAGE! Get sub cats--->
<cfif Isdefined('arguments.uid_subcategory') AND arguments.uid_subcategory NEQ "">
AND p.uid_prod_subcatid = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.uid_subcategory#"></cfif>
AND dbo.tbl_product_images.bit_pimg_primary=<cfqueryparam cfsqltype="cf_sql_bit" value="yes">
<cfif Isdefined('arguments.uid_categories') AND arguments.uid_categories NEQ "">
AND p.uid_prod_catid = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.uid_categories#"> OR
<!---QUERY! Look for associated categories and deliver product to the page--->
uid_product IN (SELECT (ac.uid_assoc_prodid)
FROM tbl_assoc_categories ac
WHERE ac.uid_assoc_catid=<cfqueryparam cfsqltype="cf_sql_integer" value="#uid_categories#">
<!---If! If the user selects a subcategory we only want the associated products directly linked to the chosen sub category --->
<cfif Isdefined('arguments.uid_subcategory') AND arguments.uid_subcategory NEQ "">
AND ac.uid_assoc_subcatid=<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.uid_subcategory#"></cfif>)</cfif>
ORDER BY txt_prod_name asc
</cfquery>
<cfreturn getProductList>
</cffunction>
Следующий запрос - это то, что я использую для детализации продуктов с использованием функций:
<cfquery name="getFeatureProducts" datasource="#application.dsn#">
SELECT
p.uid_product,
p.txt_prod_name,
p.uid_prod_templteid,
p.txt_prod_metaurl,
p.txt_prod_h1,
p.txt_prod_ref,
p.mon_prod_rrp,
p.mon_prod_current,
i.txt_pimg_name,
i.uid_pimages,
i.txt_pimg_alt
FROM tbl_products p
INNER JOIN tbl_product_images i ON (p.uid_product = i.uid_pimg_prodid)
INNER JOIN tbl_product_features f ON (p.uid_product = f.uid_prodf_prodid)
WHERE 0=0
AND f.uid_prodf_featid IN (<cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#arguments.uid_features#" list="yes">)
GROUP BY p.uid_product, p.txt_prod_name, p.uid_product, p.txt_prod_name, p.uid_prod_templteid, p.txt_prod_metaurl, p.txt_prod_h1, p.txt_prod_ref,p.mon_prod_rrp,p.mon_prod_current,i.txt_pimg_name,i.uid_pimages,i.txt_pimg_alt
HAVING COUNT(f.uid_prodf_featid) = <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#ListLen(arguments.uid_features)#">
ORDER BY p.txt_prod_name
</cfquery>
В настоящий момент приведенный выше запрос возвращает все продукты без учета категорий, подкатегорий или связанных категорий.Мне нужно иметь возможность добавить функциональность первого запроса во второй запрос.Я могу сделать категорию и подкатегорию хорошо, просто добавив isdefined
и оператор SQL;это связанные категории, с которыми я борюсь.Не уверен, как добавить вложенный запрос к предложению WHERE и по-прежнему поддерживать его работу, я пытался поиграть, но не получилось, поскольку он всегда дает неправильные результаты.
Любая помощь приветствуется!