ColdFusion增加了数量

时间:2012-03-06 09:50:10

标签: coldfusion

不太确定该怎么称呼,这个标题与我能想到的几乎一样接近!

基本上,我们为客户设立了一个竞赛,根据提供的信息量为竞赛分配更多参赛作品。我知道我不清楚,但让我试着解释一下。

在我们的数据库中,会有类似

的内容
Name | Number of Entries 
''''''''''''''''''''''''    
Josh |        3
Mike |        3
Pat  |        1
Raul |        2

当然,数据库中有更多信息,但这是一个简化版本。

我想要它做的是运行一些代码来更新数据库,根据它们有多少条目来分配值,即

Name | Number of Entries | Raffle Number(s)
'''''''''''''''''''''''''''''''''''''''''''
Josh |        3          |      1, 2, 3
Mike |        3          |      4, 5, 6
Pat  |        1          |         7
Raul |        2          |        8, 9

等等。因此,代码会读取它们有多少条目,并将这些不断增加的值(基于最后一个值)插入到数据库中。

如果您需要进一步澄清,请与我们联系!

2 个答案:

答案 0 :(得分:2)

也许这就是你的追求:

<CFQUERY name="qGetStats" datasource="#yourdsn#">
    SELECT id,number_of_entries
    FROM mytable
</CFQUERY>
<CFSET counter = 1 />
<CFLOOP query="qGetStats">
    <CFSET dummy = "" />
    <CFLOOP from="#counter#" to="#counter+qGetStats.number_of_entries-1#" index="idx">
        <CFSET dummy = listappend(dummy,idx) />
    </CFLOOP>
    <CFQUERY datasource="#yourdsn#">
        UPDATE mytable
        SET
        raffle_numbers = <CFQUERYPARAM value="#dummy#" cfsqltype="cf_sql_varchar" />
        WHERE id = <CFQUERYPARAM value="#id#" cfsqltype="cf_sql_integer" />
    </CFQUERY>
    <CFSET counter = counter + qGetStats.number_of_entries />
</CFLOOP>

我不明白为什么你需要这个,但它可能是答案; - )

答案 1 :(得分:2)

我肯定会创建一个表来保存条目,另一个表来保存抽奖号码。您的代码将更容易,如果您需要,您将可以获得更多数据。

只需将新记录插入到存储每个条目的抽奖号码的表中,而不是递增数字。这将在您的数据库中使用更多空间,但您将拥有更多数据和更轻松的代码。

然后只需使用以下代码来获取您描述的数据

 SELECT EntryID, EntryName
        (
            SELECT  count(*)
            FROM    rafflenumbers
            WHERE   rafflenumbers.EntryID = entries.EntryID
        ) AS NumberOfEntries
 FROM   entries

解决评论中出现的样本,然后您可以轻松找到抽奖号码为5的条目。

 SELECT     EntryID
 FROM       entries
 INNER JOIN rafflenumbers
    ON      entries.EntryID = rafflenumbers.EntryID
 WHERE      rafflenumbers.Number = 5