|
|
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
Задачка: есть таблица 1 устройств [ID] (int), [Name] (varchar), [Начало_работы] (smalldatetime); есть таблица 2 [ID] (int), [когда] (datetime), [сколько_дней] (int) Абсолютно точно, что "дырок", когда устройство не работает нет. допустим самый простой вариант: таблица1: (1, 'Агрегат#1', '2002-01-01') таблица2: (1, '2002-01-01', 12), (1, '2002-01-02, 10) Нужно красиво получить таблицу (1, 12, '2002-01-01', '2002-01-13'), (1, 10, '2002-01-13', '2002-01-23') То есть каждая запись таблицы 2 продлевает срок использования на N дней. и нужно узнать, какая запись за какой период отвечает. Последовательность в результате должна абсолютно совпадать с последовательностью записей в таблице2. В принципе, я сделал это, но оччень долго и некрасиво, хоть и без курсоров... Кто-нибудь знает, как это сделать просто? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 10:55:43 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
Не совсем понятны условия задачи... Можно поподробнее? Желательно, с начальным набором данных пошире. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 12:44:19 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. так что ли? и что не нравится? если скорость работы, то надо индексы расставлять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 12:53:47 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
Хм... Может так понятнее будет... Есть уйма пейджеров. Каждый из них когда-то продан, то есть есть номер и дата начала эксплуатации (таблица 1). Обслуживание пейджера стоит денег и время от времени оплачивается по текущим на тот момент ценам (получается он оплачен тогда-то, по такой-то цене на столько-то дней /таблица 2/). Задача узнать , в какие периоды по какой цене было обслуживание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 12:55:15 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
если последовательность критична, то order by, но это можно сделать и из финальной таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 12:56:32 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
В принципе, я сделал это, но оччень долго и некрасиво, хоть и без курсоров... Кто-нибудь знает, как это сделать просто? Ну так Вы не стесняйтесь, напишите как Вы это реализовали. Откуда ж мы узнаем можно ли ЭТО сделать проще и красивее, если мы ЭТОГО не видели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 14:12:15 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
Так и не понятно, что трудно сделать: толи select написать толи insert в таблицу №2 Чего надо то объясните Да и какая проблема создать запись в таблице на оплату периода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 14:23:32 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
Вот какие действия необходимо предпринять: По данному устройству из таблицы 1 берётся дата начала - запомнили @Data. Затем обрабатывается таблица 2 по порядку, в котором туда данные добавлялись: [Дата начала] = @Data, [Дата окончания] = @Data+[Дней], Затем эту расчитанную дату окончания запоминаем в @Data и так, пока данные по этому устройству. Со следующим начинаем сначала. А как одним-двумя запросами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 14:26:47 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
Сами попросили ;-) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 14:34:23 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
Можно конечно без циклов. Не знаю насколько это красиво... Я понял так. Есть некий счет открытый с какого-то числа, который пополняется. Надо узнать в какой момент было за какой период кем уплачено. Если чё не понял - попробуйте вникнуть и переделать. Но даже если это и пожходит - обязательно поймите принцип. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Кстати вызывает удивление большое количество вопросов от программистов из пейдженговых компаний. Неужели нет специальных программ? Да и как-то я не думал что у нас такая развитая пейджинговая сеть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 15:24:41 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
2SergSuper: Я не программист "из пейджинговой компании" и пейджинговая сеть постепенно захиревает... Но пока ещё есть и проблема не в "специальных программах", а в "специальных программах", которые удобны и могут связываться как с техническими средствами компании, так и с бухгалтерией, оставаясь удобными. ПС. Перед Вашим видением SQL преклоняюсь . Спасибо за решение. Огромное. PS2. Когда писал сюда вопрос, -- предполагал, что именно Вы сможете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 15:32:24 |
|
||
|
можно ли сделать красиво...
|
|||
|---|---|---|---|
|
#18+
Спасибо конечно за тёплые слова, но на самом деле тут ничего сложного нет, это обычный запрос с накоплением. Многие бы смогли написать, но мне приятно себя почувствовать умнее других, а остальные просто скромнее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 15:52:57 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32057917&tid=1819626]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 329ms |

| 0 / 0 |
