[identity profile] haviras.livejournal.com posting in [community profile] useful_faq
Сформулировать толком не могу, но попробую


Вобщем есть кассы. Есть билеты в этих кассах.
На отдельной странице вносим туда билет красный 100 штук
Таким образом аполняем  таблицу braclets в БД
Заполнили.

Теперь надо эти билеты тратить.

Заходим на страницу, где тратятся (отмечается учет продажи сиречь) билеты.

Пишем: "Красных продано - 10"

Страница отображает остаток 90, хранящийся в таблице braclets

Проблема вот в чем.... как сделать так, что бы 10 не отнималось каждый раз при обновлении страницы?

А потом 10 меняем на 15, потом на 20... 25.. 50... 100 (шаг произвольный)

Вот и как сделать что бы из БД вычиталась последняя сумма и записывалась в БД,. а не сначала 15, а потом 20...

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


Собственно задача на логику. У меня логика выключилась уже.

...надеюсь нормально объяснил...

Date: 2009-03-15 11:34 am (UTC)
From: [identity profile] kiisinkummitus.livejournal.com
все делается совсем не так =)))

Если нас интересует количество билетов, не различая их, то вводим остаток сто, потом по факту продажи вводим движение -10, -15 и т.д. Одна продажа - одно движение. Дальше один или два запроса - смотря, в сколько таблиц раскладываешь.

Ежели ты билеты хочешь различать, то меняешь поле статус в конкретной записи...

Date: 2009-03-15 12:03 pm (UTC)
From: [identity profile] kiisinkummitus.livejournal.com
>Продажи билетов хранятся в двух таблицах (по количеству касс, хотя можно было сделать
> и в одной. Но не подумал. Уже объединять поздно - информации очень много внесли )
Фигня, можно объединить, и чем раньше - тем лучше.

>Вид таблицы
>id color price count date

Отображение пользователю идет из выборки по колонке where date= столько то

color - имя билета
price -цена
count - сколько продано за дату
date - собственно дата

>Раз в месяц скриптом данные из таблицы за прошедший месяц собираются и выносятся в >архивную таблицу вида
>archive_месяц_касса. Из рабочей таблицы они удаляются.
Можно агрегировать удаляемые записи в остаток - т.е. в феврале было продано N билетов. Но тут у тебя путаница - учет количества и учет бабла смешаны...

>Значение в таблицу color вносится из другой таблицы вида
>id, name, count

а привести к какой-то там форме нормализации слабо? Ты про реляционки что-то читал, или так, наобум? Эту таблицу надо делить на две - id,color и id,count =) И ввести поле для даты, когда запись сделана о количестве.

> Идея такая, как сделать что бы в count оказывалось общее число оставшихся билетов и
> что бы вычитались они только один раз
Не получится. Оптимизировать можно за счет периодически запускаемой процедуры, которая будет готовить данные, которые ты будешь веб-серверу давать, что-то вроде кеширования.