|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
Имеется таблица TDV со структурой: kod n(5)-код контрагента data d(8)-дата операции N_dok c(10)-№ докум. op n(1)-операция:0-приход,1-расход suma (12,2)-Сумма операции Тогда ведомость дебеторов-кредиторов на дату NADAT формируется с помощью запроса: Код: plaintext 1.
Можно ли с помощью одних SQL-запросов сформировать таблицу (для акта сверки на дату NADAT ) со структурой: data d(8)-дата операции N_dok c(10)-№ докум. SUM_P N(12,2)-сумма прихода (0 ,если документ расход.) SUM_R N(12,2)-сумма расхода (0, если документ приход.) OST_TEK N(12,2)-остаток текущий Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2008, 18:41 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
Нарастающий итог? Если на одну дату - один документ, то легко Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Если же на одну дату может быть несколько документов, то нужен "порядок следования". Т.е. некое поле, по содержимому которого можно сказать, какой документ был "первым", а какой - "вторым". Соответственно, именно это поле и использовать в условии связки таблиц, чтобы ограничить количество записей "второй" таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2008, 19:24 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
ВладимирМ Cпасибо ,предложенную Вами схему Sql-запроса буду использовать в своих разработках. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2008, 09:31 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
ВладимирМ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В выше указанном Sql запросе не учтена операция в нарастающем итоге,поэтому запрос в данном случае имеет таой вид: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2008, 10:27 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
Благодаря ВладимирМ у меня получился следующий работоспособный код для формирования акта сверки с поставщиками: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Вопрос:можно ли первые 2 запроса объединить в один ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 16:28 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
LUCIANБлагодаря ВладимирМ у меня получился следующий работоспособный код для формирования акта сверки с поставщиками: Код: plaintext 1. 2. 3.
Можно заменить на такое: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 16:37 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
LUCIANВопрос:можно ли первые 2 запроса объединить в один Думаю что нет. Встречный вопрос - в твоем первом посте описано наиболее быстрое и понятное решение. Чем тебе SCAN не понравился? Любая попытка решить задачу (которая связана с порядком записей) средствами SQL заканчивается кучей нечитабельных селектов, т.к. в теории реляционных БД нет такого понятия номер записи, как следствие нет понятия следующая/предыдущая запись, поэтому нумерацию изобретают и запихивают в таблицу отдельным полем и отдельно извращаются со связыванием соседних записей. В итоге огромные нечитебельные и медленные селекты. XBASE же наоборот заточен на работу с последовательностями записей с учетом их порядка. Попробуй померить время твоего решения со SCAN`ом и твоих трех SELECT`ов ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 16:45 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
Sergey Sizov. Можно заменить на такое: SELECT cast(0 as ineger) as NZ,Tdv.* FROM rsp!tdv; WHERE Tdv.data <= NADAT AND Tbdv.KOD = m.KOD_A order by Tdv.data, Tdv.op, Tdv.n_dok, Tdv.scet into cursor CORD readwrite update cord set NZ= recno() или replace all NZ with RecNo() Спасибо ,SELECT-SQL здесь один ,но всё равно получается 2 строки операторов. Хотелось бы видеть один SELECT-SQL оператор ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 16:56 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
Если в итоге это надо для формирования отчета, то нарастающий итог можно рассчитать средствами отчета. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 17:09 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
Dima T LUCIANВопрос:можно ли первые 2 запроса объединить в один Думаю что нет. Встречный вопрос - в твоем первом посте описано наиболее быстрое и понятное решение. Чем тебе SCAN не понравился? Вариант программы со SCAN сделал в 1996 г.Сейчас эту программу пришлось переписывать под нового пользователя,и чтоб появился азарт к работе решил обойтись без SCAN. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 17:16 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
LUCIANСпасибо ,SELECT-SQL здесь один ,но всё равно получается 2 строки операторов. Хотелось бы видеть один SELECT-SQL оператор 1. Батенька, я тебе сделал две строки вместо трех и ты еще чем-то недоволен? 2. Хотеть не вредно, но в фоксе нет функций нумерования строк результирующего набора. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 17:19 |
|
Текущий остаток и Sql-запрос
|
|||
---|---|---|---|
#18+
LUCIANВариант программы со SCAN сделал в 1996 г.Сейчас эту программу пришлось переписывать под нового пользователя,и чтоб появился азарт к работе решил обойтись без SCAN. Старое не значит худшее. Думаю есть и другие точки приложения азарта :), иначе остается только пожелать удачи в "битве с ветряными мельницами". PS Сколько времени потребовалось чтобы понять что делает код написанный 12 лет назад? А теперь представь что тебе же потребуется разобраться через пару лет в твоих трех чудо-селектах ... или того хуже если кто-то другой твою поделку сопровождать будет. О нем ты подумал? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 17:28 |
|
|
start [/forum/topic.php?desktop=1&fid=41&tid=1587407]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 141ms |
0 / 0 |