Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
есть таблички: type: id name obj: id idtype name parname: id idtype name parval: idparname idobj val у объекта определенного типа могут быть параметры. Параметры могут иметь два значения по-умолчанию и рабочее. При создании нового параметра автоматически создается значение по-умолчанию. Задача выбрать значения всех параметров для всех объектов, при условии что если отсутствует рабочее значение то оно должно подменяться на по-умолчанию. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 14:02 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
да забыл дефолтные значения для параметра в idobj имеют null (думаю вообще завести для этого служебный объект для ускорения) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 14:10 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
И мы все поняли, в какой таблице у тебя что хранится ... Более того, нам даже стало понятно, как отличить параметр по умолчанию от рабочего параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2006, 05:08 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
прошу прощения :) что не точно описал исходные данные: таблица - type (хранятся наименования типов объектов) таблица - obj (список объектов с сылкой на тип) таблица - parname (список имен параметров для объектов определенного типа) таблица - parval (хранит значения параметров для объектов) - если поле idobj - null тогда это параметр дефоултный для всех объектов данного типа; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 09:19 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Смотрите в сторону ф-ции coalesce(a,b). Если b - NULL, вернет a, иначе - b. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 11:28 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
autocommitда забыл дефолтные значения для параметра в idobj имеют null (думаю вообще завести для этого служебный объект для ускорения) Помоему это правильная идея. Но помоему в данной ситуации есть более простая реализация, т.к. paramname описывает параметры класса то и значение по умолчанию стоит внести в описание парметра, то есть чуть расширить таблицу parname: id idtype name defvalue. Создавать кортежи в таблице parval с idobj=null - противоричит объектно ориентированному подходу. Внесем доработку в parval: parval: idparname idobj val - default NULL; Тогда интересующий запрос будет выглядить следующим образом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Естественно перечень [интересующие столбцы] должен совпадать в двух запросах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 11:47 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо за подсказку. Таблицы можно переработать. но есть одна загвоздка ! Таблиц, которые содержат значения параметров будет 3 (одна для чисел, вторая для дат, а третья для строки). Поэтому думаю реализовать таким образом. При создании нового имени параметра для определенного типа создавать служебный объект, если его нет, для данного типа + сразу создается дефоултное значение для данного параметра и привязывать к этому служебному объекту. Получается, что у меня для каждого типа объектов будет обязательный объект который хранит все дефоултные значения данного типа. Можно пойти и по пути, чтобы в описании параметра хранить и дефоултные значения, чтобы не создавать служебный объект, но тогда нужно 3 колонки каждого типа. Как будет быстрее при выборке не представляю пока себе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 12:38 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
autocommitТаблицы можно переработать. но есть одна загвоздка ! Таблиц, которые содержат значения параметров будет 3 (одна для чисел, вторая для дат, а третья для строки). Мне кажется что здесь вы сойдете с правильного пути. Как я понял у вас есть желание реализовать объектно ориентированный принцип на РБД. Тут есть два варианта решения 1) изучить примеры переделки реляционной БД в объектно ориентированную БД (такие примеры есть, даже для postgres) 2) воспользоваться непосредственно ООБД. Ваш вариант является половинчатым, то есть вы хотите переделать РБД в ООБД наполовину, помоему это не самое удачное решение. Если цель реализовать ОО - подход и потом воспользоваться всеми его прелестями, то обратитесь лучше к п.1. Иначе лучше попытаться реализовать хранение данных методами РБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:20 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Спасибо за помощь буду думать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 14:29 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
autocommitПри создании нового имени параметра для определенного типа создавать служебный объект, если его нет, для данного типа + сразу создается дефоултное значение для данного параметра и привязывать к этому служебному объекту. Получается, что у меня для каждого типа объектов будет обязательный объект который хранит все дефоултные значения данного типа. Можно пойти и по пути, чтобы в описании параметра хранить и дефоултные значения, чтобы не создавать служебный объект, но тогда нужно 3 колонки каждого типа. Как будет быстрее при выборке не представляю пока себе. Ну если продолжать в этом духе то получается три таблицы для описания параметров и три таблицы для описания их значений в объекте, тогда общий запрос будет состоять из объединения шести выборок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 15:55 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34190324&tid=2005884]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 352ms |

| 0 / 0 |
