Воскресная проблема с БД (php+mysql)
Mar. 15th, 2009 01:01 pm![[identity profile]](https://www.dreamwidth.org/img/silk/identity/openid.png)
![[community profile]](https://www.dreamwidth.org/img/silk/identity/community.png)
Сформулировать толком не могу, но попробую
Вобщем есть кассы. Есть билеты в этих кассах.
На отдельной странице вносим туда билет красный 100 штук
Таким образом аполняем таблицу braclets в БД
Заполнили.
Теперь надо эти билеты тратить.
Заходим на страницу, где тратятся (отмечается учет продажи сиречь) билеты.
Пишем: "Красных продано - 10"
Страница отображает остаток 90, хранящийся в таблице braclets
Проблема вот в чем.... как сделать так, что бы 10 не отнималось каждый раз при обновлении страницы?
А потом 10 меняем на 15, потом на 20... 25.. 50... 100 (шаг произвольный)
Вот и как сделать что бы из БД вычиталась последняя сумма и записывалась в БД,. а не сначала 15, а потом 20...
Т.е пробегать всю таблицу - вариант, но довольно глупый. И неудобный. Усугубленный тем, что
на каждый месяц создается отдельная таблица, а старая копируется в архивную таблицу и редактированию не подлежит.
Собственно задача на логику. У меня логика выключилась уже.
...надеюсь нормально объяснил...
Вобщем есть кассы. Есть билеты в этих кассах.
На отдельной странице вносим туда билет красный 100 штук
Таким образом аполняем таблицу braclets в БД
Заполнили.
Теперь надо эти билеты тратить.
Заходим на страницу, где тратятся (отмечается учет продажи сиречь) билеты.
Пишем: "Красных продано - 10"
Страница отображает остаток 90, хранящийся в таблице braclets
Проблема вот в чем.... как сделать так, что бы 10 не отнималось каждый раз при обновлении страницы?
А потом 10 меняем на 15, потом на 20... 25.. 50... 100 (шаг произвольный)
Вот и как сделать что бы из БД вычиталась последняя сумма и записывалась в БД,. а не сначала 15, а потом 20...
Т.е пробегать всю таблицу - вариант, но довольно глупый. И неудобный. Усугубленный тем, что
на каждый месяц создается отдельная таблица, а старая копируется в архивную таблицу и редактированию не подлежит.
Собственно задача на логику. У меня логика выключилась уже.
...надеюсь нормально объяснил...
no subject
Date: 2009-03-15 11:34 am (UTC)Если нас интересует количество билетов, не различая их, то вводим остаток сто, потом по факту продажи вводим движение -10, -15 и т.д. Одна продажа - одно движение. Дальше один или два запроса - смотря, в сколько таблиц раскладываешь.
Ежели ты билеты хочешь различать, то меняешь поле статус в конкретной записи...
no subject
Date: 2009-03-15 11:43 am (UTC)Касаемо таблиц которых затриагивает это мероприятие:
Продажи билетов хранятся в двух таблицах (по количеству касс, хотя можно было сделать и в одной. Но не подумал. Уже объединять поздно - информации очень много внесли )
Вид таблицы
id color price count date
Отображение пользователю идет из выборки по колонке where date= столько то
color - имя билета
price -цена
count - сколько продано за дату
date - собственно дата
Раз в месяц скриптом данные из таблицы за прошедший месяц собираются и выносятся в архивную таблицу вида
archive_месяц_касса. Из рабочей таблицы они удаляются.
Значение в таблицу color вносится из другой таблицы
вида
id, name, count
Значение из name берется и вписывается в color, соответственно
count - общее число билетов доступных к продаже
Идея такая, как сделать что бы в count оказывалось общее число оставшихся билетов и что бы вычитались они только один раз
no subject
Date: 2009-03-15 12:03 pm (UTC)> и в одной. Но не подумал. Уже объединять поздно - информации очень много внесли )
Фигня, можно объединить, и чем раньше - тем лучше.
>Вид таблицы
>id color price count date
Отображение пользователю идет из выборки по колонке where date= столько то
color - имя билета
price -цена
count - сколько продано за дату
date - собственно дата
>Раз в месяц скриптом данные из таблицы за прошедший месяц собираются и выносятся в >архивную таблицу вида
>archive_месяц_касса. Из рабочей таблицы они удаляются.
Можно агрегировать удаляемые записи в остаток - т.е. в феврале было продано N билетов. Но тут у тебя путаница - учет количества и учет бабла смешаны...
>Значение в таблицу color вносится из другой таблицы вида
>id, name, count
а привести к какой-то там форме нормализации слабо? Ты про реляционки что-то читал, или так, наобум? Эту таблицу надо делить на две - id,color и id,count =) И ввести поле для даты, когда запись сделана о количестве.
> Идея такая, как сделать что бы в count оказывалось общее число оставшихся билетов и
> что бы вычитались они только один раз
Не получится. Оптимизировать можно за счет периодически запускаемой процедуры, которая будет готовить данные, которые ты будешь веб-серверу давать, что-то вроде кеширования.
no subject
Date: 2009-03-15 12:12 pm (UTC)