问题描述
我用 cfloop
从数据库中提取了一个循环。将此循环转移到数组后,如果存在相同的数组,我想增加股票数量。
<cfoutput query="getStocks">
<cfif #CurrentRow# lt 5>
<cfscript>
c=#CurrentRow#;
if (c==1){
arr[c]['stok_kod']='#STOCK_CODE#';
arr[c]['lot']='#LOT_NO#';
arr[c]['stok']=#STOK_MIKTARI#;
arr[c]['depo']='#DEPO#';
arr[c]['isim']='#PRODUCT_NAME#';
arr[c]['skt']='#GET_SKT.DELIVER_DATE#';
}
for (i=1; i <= arrayLen(#arr#);i++) {
if (arr[i]['stok_kod'] eq '#STOCK_CODE#' ){
arr[i]['stok']+=#STOK_MIKTARI#;
}else{
arr[c]['stok_kod']='#STOCK_CODE#';
arr[c]['lot']='#LOT_NO#';
arr[c]['stok']=#STOK_MIKTARI#;
arr[c]['depo']='#DEPO#';
arr[c]['isim']='#PRODUCT_NAME#';
arr[c]['skt']='#GET_SKT.DELIVER_DATE#';
}
}
</cfscript>
</cfif>
</cfoutput>
我如何检测那些具有相同股票代码的人?
解决方法
您可以尝试使用带有GROUP BY
函数的查询查询方法
这是它如何工作的示例。
<cfscript>
getStocks = queryNew("stok_kod,stok","varchar,integer");
queryAddRow(getStocks);
querySetCell(getStocks,"stok_kod","1234");
querySetCell(getStocks,"stok","-10");
queryAddRow(getStocks);
querySetCell(getStocks,"5678");
querySetCell(getStocks,"10");
queryAddRow(getStocks);
querySetCell(getStocks,"30");
</cfscript>
<cfquery name="newQuery" dbtype="query">
SELECT stok_kod,SUM(stok) as stok
FROM getStocks
GROUP BY stok_kod
</cfquery>
<cfdump var="#newQuery#">
输出
,我建议您使用一个变量来列出您的不同股票代码。
示例:<cfset lst_stok_kod = "a,b,c,d">
可能来自您的 SQL 查询。
之后,您可以使用 ArrayFindNoCase
函数检查您的数组是否存在该股票代码。如果你发现它不止一次,你每次都会增加股票数量。