不太确定该怎么称呼,这个标题与我能想到的几乎一样接近!
基本上,我们为客户设立了一个竞赛,根据提供的信息量为竞赛分配更多参赛作品。我知道我不清楚,但让我试着解释一下。
在我们的数据库中,会有类似
的内容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
等等。因此,代码会读取它们有多少条目,并将这些不断增加的值(基于最后一个值)插入到数据库中。
如果您需要进一步澄清,请与我们联系!
答案 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