ColdFusion увеличение числа номеров - PullRequest
2 голосов
/ 06 марта 2012

Не совсем уверен, как это назвать, этот заголовок настолько близок к тому, что мне нужно, насколько я могу представить!

По сути, мы создали конкурс для клиента, который назначает больше записей дляконкурс основан на том, сколько информации предоставлено.Я знаю, что неясно, но позвольте мне попытаться объяснить.

В нашей базе данных будет что-то вроде

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 ]

2 голосов
/ 06 марта 2012

Я бы определенно создал таблицу для хранения записей, а другую - для лотереи. Ваш код будет проще, и вам будет доступно больше данных, если вам это нужно.

Вместо увеличения чисел просто вставьте новую запись в таблицу, в которой хранятся номера лотереи для каждой записи. Это займет немного больше места в вашей базе данных, но у вас будет больше данных и более простой код.

Затем просто используйте следующий код, чтобы получить данные, которые вы описываете

 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
2 голосов
/ 06 марта 2012

Может быть, это то, что вы ищете:

<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>

Я не понимаю, зачем вам это нужно, но это может быть ответом; -)

...