Ежемесячные регистрации и регистрации с датой - PullRequest
2 голосов
/ 14 февраля 2011

У меня есть таблица MySQL, содержащая фиксированные цены-регистрации как ежемесячно, так и с определенной датой, которые выглядят так:

id       int(10)
date     date
userid   int(10)
montly   tinyint(1)
price    decimal(10,2)

И некоторые данные могут быть

id |    date    | userid | monthly | price
 1 | 01/01 2011 |    1   |    1    |  200
 2 | 01/02 2011 |    2   |    1    |  300
 3 | 14/01 2011 |    1   |    0    |  400
 4 | 15/02 2011 |    3   |    0    |  100
 5 | 23/02 2011 |    2   |    0    |  600
 6 | 05/03 2011 |    2   |    0    |  700

Ежемесячная регистрация всегда начинается 1 числа месяца. и если monthly равно 1, это ежемесячная регистрация, в противном случае это происходит только один раз.

И запрос может быть (просто пример)

SELECT * 
FROM `fixedpriceregistrations` 
WHERE `date` BETWEEN '01/02 2011' AND '02/04 2011'

где я кроме этого вывода:

id |    date    | userid | monthly | price
 1 | 01/01 2011 |    1   |    1    |  200
 2 | 01/02 2011 |    2   |    1    |  300
 4 | 15/02 2011 |    3   |    0    |  100
 5 | 23/02 2011 |    2   |    0    |  600
 1 | 01/01 2011 |    1   |    1    |  200
 2 | 01/02 2011 |    2   |    1    |  300
 6 | 05/03 2011 |    2   |    0    |  700
 1 | 01/01 2011 |    1   |    1    |  200
 2 | 01/02 2011 |    2   |    1    |  300

Могу ли я сделать это в MySQL или как лучше всего это сделать в PHP?

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

1 Ответ

2 голосов
/ 19 февраля 2011

Сделай это с php.Я хотел бы:

Извлечь все необходимые записи (т.е. с даты начала) из таблицы в массив, $results.

$output = Array();
foreach ($results as $row)
{
    $output[] = $row;
    if ($row['monthly']) 
        while ( ($row['date'] = add_a_month_to( $row['date'] )) < $end_date )
            $output[] = $row;
}

Затем отсортировать полученный массив $outputЯ оставляю вам сортировку и функции add_a_month_to.Очевидно, предполагается, что вы используете разумный (сортируемый) формат даты, например, 2011-01-13.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...