|
|
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
Здравствуйте все! Имеется таблица History с полями docID, ТоварID, amount, price,... и таблица Docs с полями docID, ОтКогоID, docdate,... все операции по продажам и передвижению товара заносятся в History, пока все в нем, а номер документа в Docs. Поступления товара “откого” тоже в Docs. Наступает момент, когда нужно оплатить товар, поступивший от конкретного поставщика, по отдельно взятому документу. Результат должен быть таким от остатка товара вычесть сколько оплачивается. Посоветуйте, пожалуйста, каким путем идти? создать специально для оплати отдельную таблицу, или это организовать в той же таблице History. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2006, 17:42 |
|
||
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
все операции - приход, отгрузка, оплаты, перемещение, возврат, усушка, списание и т.д. должны быть разделены, а как хранить - это второй вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 10:00 |
|
||
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
Тогда вопрос, как разделены? У меня в Docs с полями docID, ОтКогоID, docdate,... сидит поле “операция” в котором хранится код операции. Вопрос как раз про то, как лучше хранить. Хранить оплата, возврат, и ему подобные в той же History со знаком “-“ или сделать отдельную таблицу для этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 13:24 |
|
||
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
В той же. Сейчас такая мода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 14:02 |
|
||
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
№ 554 567 Вопрос как раз про то, как лучше хранить. проблемы две: 1. набор операций может меняться 2. каждый вид операции имеет свой набор полей по сему я храню все в 2-х таблицах по EAV в одной все операции (только тип номер и дата) во 2-ой поля (здесь возможны варианты: все в одном поле через разделитель или на каждое поле одна строка - зависит от объемов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 14:14 |
|
||
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
Канешно, подход может быть разный. на данный момент у меня одна таблица History, но взяв в руки пылу смотрю и думаю распилить или нет. Доп. первый вариант: все находится в одной таблице второй вариант: в две таблицы, и допустим, с одинаковыми полями по-моему, нужный объем для хранения информации одно и тоже(может, и нет). что касается быстроты, нужен ваш совет: К примеру, запрос для остатков: запрос для первого варианта: выбрать все коды, SUM1-SUM2 из таблицы коды LEFT JOIN (выбрать SUM(amount) as SUM1 из History где docID находится в (выбрать все docID из docs где ОБЬЕКТ _ ПОЛУЧАТЕЛЬ =” КРИТЕРИИ ОТБОРА” ) группировать по кодам) LEFT JOIN (выбрать SUM(amount) as SUM2 из History где docID находится в (выбрать все docID из docs где ОБЬЕКТ _ ИСТОЧНИК =” КРИТЕРИИ ОТБОРА” ) группировать по кодам) запрос для первого варианта: выбрать все коды, SUM1-SUM2 из таблицы коды LEFT JOIN (выбрать SUM(amount) as SUM1 из History где docID находится в (выбрать все docID из docs где ОБЬЕКТ _ ПОЛУЧАТЕЛЬ =” КРИТЕРИИ ОТБОРА” ) группировать по кодам) LEFT JOIN (выбрать SUM(amount) as SUM2 из PAYMENT_History где docID находится в (выбрать все docID из docs где ОБЬЕКТ _ ИСТОЧНИК =” КРИТЕРИИ ОТБОРА” ) группировать по кодам) Канешно, очень извиняюсь, но можете ли вы, оценить, который будет из них работать быстрее. Т.Е. одна большая таблица, но выборка из одной таблицы, или две по 50/50, но выборка из двух таблиц. Доп. обе таблицы в одной и той же базе. Или, кроме этих факторов, в игру вступает еще другие факторы (накладные расходы и т.д.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 15:24 |
|
||
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
Не там выигрыш ищите. Подумайте, как вместо двух проходов сделать один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 15:42 |
|
||
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
О! дай вам бог здоровья. Как раз об этом я послал вопрос в форум Access. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 16:07 |
|
||
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
ModelRНе там выигрыш ищите. Подумайте, как вместо двух проходов сделать один. Вот, что-то сочинил: Так будет правильно? или это, в сущности, то же самое SELECT коды, amount FROM коды as Sk LEFT JOIN (SELECT коды, SUM(IIF(ОБЬЕКТ _ ПОЛУЧАТЕЛЬ =” КРИТЕРИИ “),Кол,0)) - SUM(IIF(ОБЬЕКТ _ ИСТОЧНИК =” КРИТЕРИИ “,Кол,0)) as amount FROM History INNER JOIN docs ON History.docID=docs.docID WHERE ОБЬЕКТ _ ПОЛУЧАТЕЛЬ =” КРИТЕРИИ “ or (ОБЬЕКТ _ ИСТОЧНИК =” КРИТЕРИИ “ группировать по кодам) as H2 on Sk.коды = H2.коды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 18:19 |
|
||
|
создать для "оплати" отдельную таблицу, или
|
|||
|---|---|---|---|
|
#18+
Очень похоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 09:48 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33682684&tid=1545297]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 524ms |

| 0 / 0 |
