我试图了解我必须更新的以下 Coldfusion/MySQL 查询中发生了什么(而且我正处于 CF/MySQL 的第一个月)。
我在搜索之前运行了一个查询,它设置了变量pl (pricelists),如下所示:
<cfif variables.module IS "yes">
<cfquery datasource="ds" name="qp">
<!--- selects pricelist and seller --->
</cfquery>
<cfset variables.pl = "LEFT JOIN pricelist p ON ">
<cfoutput query="qp" >
<cfif qp.preislist IS ''>
<cfset variables.pl= variables.pl & '(p.iln = a.iln AND p.preislist = "AAA" AND p.ean = a.ean AND p.iln = "#qp.seller#") OR '>
<cfelse>
<cfset variables.pl= variables.pl & '(p.iln = a.iln AND p.preisliste = "#qp.preislist#" AND p.ean = a.ean AND p.iln = "#qp.seller#") OR '>
</cfif>
</cfoutput>
<cfset variables.pl = variables.preislisten & "(1=0)">
</cfif>
然后将其“移植”到搜索查询中,这增加了我的困惑,如下所示:
<cfquery datasource="ds" name="getArt">
SELECT a.* <cfif variables.module IS "yes">, p.ek, p.vk, p.waehrung, p.onlinepreis</cfif>
FROM artdata a
<cfif variables.module IS "yes">
<cfqueryparam cfsqltype="cfsql_varchar" value="#variables.pl#">
</cfif>
....
很多问题:
- 不需要 cfparam 查询字段,例如qp.seller,或者有吗?
- 我不应该总是像在artdata AS a中那样使用 ALIAS 而不是只使用artdata a吗?
- 我可以像这样选择p.ek, p.vk, ...尽管价格表稍后将仅通过变量variables.pl声明(即LEFT JOIN pricelist p ON ...)
- 这是怎么回事( 1=0)? 它的目的是什么?(3=2), (1=2) 的同上。
感谢您的启发!