|
|
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Собственно формулировка темы получилась немного кривоватой. Похожую проблему где-то видел на форуме, но сейчас немогу найти. есть месяц и пары чисел (начальные и конечные показания электросчётчика) Код: plaintext 1. 2. 3. 4. 5. 6. Поскольку обработка квитанций после сберкассы идёт вручную, то забить в базу могут в любом порядке. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 09:09:09 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
хранить не показания счетчика (или не только), а реальные числа: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 09:37:15 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
хранимая процедура (алгоритм): выбрать первую строку в first_col, sec_col цикл: искать сл. sec_col выбрать в first_col, sec_col где first_col = sec_col конец цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 09:42:53 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
рабочий вариант могу дать, только значительно позже :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 09:43:38 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
авторвыбрать в first_col, sec_col где first_col = sec_col Согласен. Об этом думал. Выглядит очень даже логично, но если для каждого следующего first_col есть равный ему предыдущий sec_col. А если его нет - пропустили одну квитанцию (потеряли) при упаковке в сберкассе - распаковке у меня в операционном зале. В самом общем виде пока не дотягиваю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 09:51:00 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Не существует однозначного всеобщего решения данной задачи в рамках представленных исходных данных. Например: Код: plaintext 1. 2. 3. 4. 5. Как различить вторую и пятую записи ? Правильно, никак ! Значит нужны дополнительные признаки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 10:15:52 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
...или дополнительные ограничения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 10:17:12 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
>Johnmen Я не спорю, какие-то дополнения должны быть. Но какие? Номер квитанции, который пропечатала сберкасса? Абонент может высыпать кучку квитанций и в каком порядке их обработает кассир неизвестно. Но на два полных оборота за один месяц можно не обращать внимания. Абонент с таким бешеным потреблением энергии это эксклюзив. Его выловим другим способом и поставим более мощный счётчик (другой модели) пусть потребляет - криминала нет. Красота и марафет в этом случае не нужны. Мне важно красоту и понятность навести для основной массы абонентов(большинство пенсионеры) чтобы они меньше тратили времени и быстрее понимали распечатку сравнивая со своими корешками квитанций. Вот корешки-то они сами отсортировали так как надо - можете быть уверены на 100 баллов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 10:31:18 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Не забывай еще про такую вещь, как замена счетчика. При этом нарушается последовательность показаний. Я у себя решил этот вопрос так: храню не месяц и год, а полную дату показания, причем два показания на одну дату не допускаются. Это позволяет делать и замены счетчиков, и смену тарифов и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 11:04:40 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
2 vl2000 всё гениальное просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 11:10:49 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
ВАУ!!! vl2000 — родственная душа! Ты из какого Энерго? Замену счётчика я разрулил и достаточно оптимально с точки зрения скорости БД. Интересует сортировка в пределах одного счётчика и лучше всего на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 11:12:21 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Саратовэнерго, Приволжские эл. сети А ты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 11:15:47 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, не обратил внимания на профиль. Наверное из НижНовЭнерго7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 11:17:02 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
vl2000причем два показания на одну дату не допускаются Допускаютя! И ничего с этим не сделать. Особенно когда продвинутые абоненты платят через ИнтерНет с пластиковых карт. Тот кто разрабатывал сайт для оплаты предусмотрел только дневной и ночной тарифы и НЕ предусмотрел оплату 40 кВт на человека по базовому тарифу. Поэтому абоненты в один день делают два платежа 1. 40 кВт на человека по базовому 2. Оставшиеся кВт-ы по экономически обоснованному - ёбтть А потом это валится мне. >vl2000 Наверное из НижНовЭнерго7 Оно самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 11:21:21 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Общее решение в предположении, что за рассматриваемый период (напр.месяц) счётчик не делает "полный оборот" и последовательность снятых показаний "непрерывна" (т.е. V1=100-V2=200,V1=200-V2=300,...): 1. Получаем "последнее" показание, не имеющее "продолжения" (VMax) SELECT T1.V2 FROM T T1 WHERE NOT EXISTS (SELECT 0 FROM T T2 WHERE T1.V2=T2.V1) 2. Получаем, что хотим SELECT CASE WHEN (V2<=VMax) THEN V2 ELSE V2-VConst, T.* FROM T ORDER BY 1 где VConst - максимально возможное показание счетчика (напр.9999). Ну и, естественно, добавить условие по интересующему периоду времени. И сервер должен поддерживать CASE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 12:07:24 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
>Johnmen Если предполагать что: счётчик не делает "полный оборот" и последовательность снятых показаний "непрерывна" то можно обойтись простым: SELECT d,t1,t2 order by d,t1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 12:23:33 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
правильно сказал Johnmen: нужны дополнительные признаки... ...или дополнительные ограничения.. А конкретно, дата, на которую снималось показание счетчика, а если за день снимается несколько показаний (меняются счетчики и т.п.), то еще и время. Причем это НЕ дата, когда абонент оплачивал квитанцию, а Дата показаний. Как же вы без этой даты определяете действующий тариф? Например, тариф менялся 10 мая. А у вас два показания- и оба за май, одно до 9 мая, другое 31. Как узнаете, какому показанию- какой тариф? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 12:51:00 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
У нас и делается ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 13:03:53 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
>vl2000 Достаточно тех ограничений, которые я указал (их и имел в виду автор, я думаю). А что касается временного интервала, частоты снятия показаний и т.п. это абсолютно не важно и роли не играет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 13:23:28 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Ну скажем, в середине месяца тарифы не меняются — по закону. Иначе население такое устроит, что министру, рискнувшему сменить тариф в середине месяца, придётся расстаться с креслом. А тариф будет отменён. Абонент оплачивает потребление за конкретный месяц - это он указывает в квитанции. И проблема возникает, когда ... Старый пример: Раньше до 300 кВт был один тариф от 301 кВт другой тариф. Хитрые абоненты, израсходовав в месяц 900 кВт, платили тремя квитанциями по 300 кВт в один день, указывая один и тот же месяц напр. май. Все три квитанции попав в БД будут расчитаны правильно 300 и от 301 до 900. Три раза по 300 кВт по маленькому тарифу это меньше чем 300 по маленькому и 600 по большому. Я ему насчитаю правильную задолженность, а он придёт качать права. Проблема только в визуализации истории этих евойных платежей. Чтобы ему было проще увидеть, где я его ущучил. Если показания будут отсортированы как-то иначе (не логично и не последовательно) он начнёт скандалить, обвинять во всём компьютер и... (...баного Чубайса). Проблема осложняется только двумя моментами 1. Произошёл оботот(переход) счётчика 2. При забивке в БД потерялась одна квитанция. Мне по барабану эти осложнения и даже замена счётчика, расчитаю-то я всё-равно правильно. Главное показать (визуализировать). Допущения типа в один месяц одна квитанция не проходят — это практика. Теория в данном случае никого не интересует. Должно быть так как на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 13:49:12 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Не пойму я чё вы маетесь... Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 13:52:15 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
>Zmeishe Я уже ответил. Добавлю, что если потеряли одну при забивке, то в первом запросе получим 2 значения для не имеющего "продолжения". Принимаем решение о дальнейших действиях... >Мимопроходящий >Не пойму я чё вы маетесь... А ты постарайся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 13:57:12 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Для той задачи, которую описал Zmeishe, мой запрос подходит уполне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 14:02:19 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
Не подойдет. Однозначно... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 14:16:44 |
|
||
|
Сортировка (с конца одного поля на начало другого)
|
|||
|---|---|---|---|
|
#18+
>Мимопроходящий А если будет такой вариант (счетчик трехзначный): янв 10 40 янв 45 90 (переход через 0) есть гарантия, что твой запрос не сделает так: янв 45 90 (переход через 0) янв 10 40 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 14:21:04 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32548648&tid=1578349]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 486ms |

| 0 / 0 |
