|
|
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
Добрый вечер! Имеется одна задача, но не пойму как можно правильно составить таблицы и связи... У нас имеется "клиент" , "товар" и "спеццена" У "товара" есть "группа" в которую он входит У "клиента" есть "спеццена" на определенный "товар" или на всю "группу" "товара" Например: (группа и товар входящий в группу) ДВЕРИ МЕТАЛЛИЧЕСКИЕ дверь стальная Россия дверь стальная Польша ... Клиент1 имеет спеццену в 1000р. на "дверь стальную Россия" Клиент2 имеет спеццену в 900р. на группу "ДВЕРИ МЕТАЛЛИЧЕСКИЕ" А вывод данных запроса должен быть типа: Клиент1 ДВЕРИ МЕТАЛЛИЧЕСКИЕ дверь стальная Россия 1000р. Клиент2 ДВЕРИ МЕТАЛЛИЧЕСКИЕ 900р. т.е. получается если у клиента спеццена только на определенный товар то выводиться группа товара и сам товар на который спеццена, а если у клиента на всю группу товара спеццена то выводятся только группа. Например: Клиент1 ДВЕРИ МЕТАЛЛИЧЕСКИЕ дверь стальная Россия 1000р. ОБОИ обои бумажные 400р. обои виниловые 500р. КЕРАМОГРАНИТ 700р. Клиент2 ДВЕРИ МЕТАЛЛИЧЕСКИЕ 900р. ОБОИ обои бумажные 400р. Как должны выглядеть таблицы для такой задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2012, 21:30 |
|
||
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
не пойму почему пробелы "Съелись" подобие таблицы не видно Добрый вечер! Имеется одна задача, но не пойму как можно правильно составить таблицы и связи... У нас имеется "клиент" , "товар" и "спеццена" У "товара" есть "группа" в которую он входит У "клиента" есть "спеццена" на определенный "товар" или на всю "группу" "товара" Например: (группа и товар входящий в группу) ДВЕРИ МЕТАЛЛИЧЕСКИЕ; ;;дверь стальная Россия ;;дверь стальная Польша ... Клиент1 имеет спеццену в 1000р. на "дверь стальную Россия" Клиент2 имеет спеццену в 900р. на группу "ДВЕРИ МЕТАЛЛИЧЕСКИЕ" А вывод данных запроса должен быть типа: Клиент1; ДВЕРИ МЕТАЛЛИЧЕСКИЕ; ;; дверь стальная Россия ; 1000р.;Клиент2 ; ДВЕРИ МЕТАЛЛИЧЕСКИЕ ; 900р.; т.е. получается если у клиента спеццена только на определенный товар то выводиться группа товара и сам товар на который спеццена, а если у клиента на всю группу товара спеццена то выводятся только группа. Например: Клиент1 ; ДВЕРИ МЕТАЛЛИЧЕСКИЕ; ;; дверь стальная Россия ; 1000р. ;; ОБОИ ;; обои бумажные ; 400р. ;; обои виниловые ; 500р. ;; КЕРАМОГРАНИТ ; 700р.Клиент2 ; ДВЕРИ МЕТАЛЛИЧЕСКИЕ ; 900р. ; ОБОИ; ;; обои бумажные ; 400р. Как должны выглядеть таблицы для такой задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2012, 21:35 |
|
||
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
Если у вас цена может быть и на всю группу товаров и на отдельные товары, то таблицы такие: Справочник ГруппыТоваров (ГруппаТоваров) Таблица Товары (ГруппаТоваров, Товар) Таблица Клиенты (Клиент) Таблица ЦеныНаГруппыТоваров (ГруппаТоваров, Цена) Таблица ЦеныНаТоваров (Товар, Цена) Таблица СпецценыДляКлиентовНаГруппыТоваров (Клиент, ГруппаТоваров, Спеццена) Таблица СпецценыДляКлиентовНаТовары (Клиент, Товар, Спеццена) Дальше - несколько лефт джоинов, если нет цены на товар, берем в качестве цены цену для группы. Простой изнулл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2012, 08:04 |
|
||
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
Спасибо, буду пробовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2012, 10:01 |
|
||
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель, Неясен смысл таблиц ЦеныНаГруппыТоваров и ЦеныНаТоваров. У них же отношение 1:1 с мастер-таблицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2012, 10:27 |
|
||
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинНеясен смысл таблиц ЦеныНаГруппыТоваров и ЦеныНаТоваров. У них же отношение 1:1 с мастер-таблицами. Да. В сферическом вакууме можно без них. В реальности цены всегда с интервалом действия цены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2012, 10:33 |
|
||
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительЕсли у вас цена может быть и на всю группу товаров и на отдельные товары, то таблицы такие: Справочник ГруппыТоваров (ГруппаТоваров) Таблица Товары (ГруппаТоваров, Товар) Таблица Клиенты (Клиент) Таблица ЦеныНаГруппыТоваров (ГруппаТоваров, Цена) Таблица ЦеныНаТоваров (Товар, Цена) Таблица СпецценыДляКлиентовНаГруппыТоваров (Клиент, ГруппаТоваров, Спеццена) Таблица СпецценыДляКлиентовНаТовары (Клиент, Товар, Спеццена) Дальше - несколько лефт джоинов, если нет цены на товар, берем в качестве цены цену для группы. Простой изнулл. Эка вас колбасит! Расскажу как когда-то сам делал. 1. все товары, работы, услуги и т.д. физически располагаются в одной таблице в дереве, т.о. никаких ненужных справочников, типа "ГруппыТоваров", ГруппыГруппТоваров" и прочая шняга не требуется. 2. Аналогичный подход и к контрагентам. 3. Т.о. есть две таблицы "Контрагенты" и "Товары", чтобы решить задачу ТС приводим систему к 4 НФ (многие-ко-многим) , иными словами, создаём таблицу "контрагенты_товары" с полями "наценка", "цена" и пр. где "наценка" - при желании указываем % наценку на входную цену на товар, "цена" - хранит фиксированную цену на товар (группу товаров) для контрагента (группы контрагентов). Такая схема позволяет в один клик менять цены. Да, некоторые продавцы достаточно жадные, поэтому математические правила округления цены их категорически не устраивают, поэтому лучше сразу озаботится этой проблемой. Как у меня было сделано, см. на рисунке. В БД была создана специальная UDF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2012, 09:10 |
|
||
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Пишу запрос... Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. И получаю вот такую табличку... "code""name""code""name""sum""comment""size""name""125""ГЕРМЕТИК""125-049""Kleo НЕЙТРАЛЬНЫЙ Герметик белый 280 мл""10%""От закупочной"1"шт""125""ГЕРМЕТИК""125-048""Kleo САНИТАРНЫЙ Герметик прозрачный 280 мл""15%""От закупочной"1"шт" А можно сделать чтобы "код" и "группа" выводились один раз, типа... "code""name""code""name""sum""comment""size""name""125""ГЕРМЕТИК""125-049""Kleo НЕЙТРАЛЬНЫЙ Герметик белый 280 мл""10%""От закупочной"1"шт""""""125-048""Kleo САНИТАРНЫЙ Герметик прозрачный 280 мл""15%""От закупочной"1"шт" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2012, 08:05 |
|
||
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
ochelot, нет, нельзя. Чтобы было "красиво" как ты хочешь, кто-то где-то должен хранить предыдущие значения этого поля. Типа: "если предыдущее значение поля совпадает с текущим, то делаем "красиво"". Если всё-таки очень хочется сделать "красиво", то тут два пути: 1. Если сервер позволяет создавать процедуры, то оберни свой запрос в процедуру, а там уже, в процедуре и анализируй каждую строчку. 2. Результат твоего запроса не в воздух-же выстреливается, вот и анализируй ситуацию в клиентском приложении, (построитель отчёта и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2012, 12:08 |
|
||
|
Как это можно спроектировать... ?
|
|||
|---|---|---|---|
|
#18+
ochelot, Принципиально возможно, но реализация будет тяжелой и, скорее всего, зависеть от диалекта SQL. Как Вам верно советуют, такие вопросы лучше решать на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2012, 13:51 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37859482&tid=1541622]: |
0ms |
get settings: |
10ms |
get forum list: |
23ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 288ms |
| total: | 597ms |

| 0 / 0 |
