|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть несколько таблиц. Группы: Код: sql 1. 2. 3. 4.
Товары: Код: sql 1. 2. 3. 4. 5. 6.
Атрибуты: Код: sql 1. 2. 3. 4. 5. 6. 7.
Значения атрибутов: Код: sql 1. 2. 3. 4. 5. 6.
Связи товаров со значениями атрибутов: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Товары объединяются в документы в таблице Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Чтобы получить количество товара в разрезе групп использую запрос: Код: sql 1. 2. 3. 4. 5. 6.
Для разбивки результата по значениям атрибутов составил запрос так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Из-за множественных связей в EXTRA_VALUES_REF суммирование происходит некорректно. Подскажите, как нужно спроектировать таблицы EXTRA_PROPS, EXTRA_VALUES, EXTRA_VALUES_REF, чтоб избежать проблем с суммированием? В каждой группе товаров может быть неограниченное число атрибутов. В каждом атрибуте - неограниченное число значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2015, 20:30 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Marcello, я бы для начала выкинул LEFT там где он не нужен. Не вижу где в последнем запросе используется EXTRA_PROPS ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2015, 22:38 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Marcello, сначала считай агрегаты, затем джойн их в виде вложенных запросов к остальным таблицам. ну, то есть, схематично: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 07:14 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Симонов ДенисMarcello, я бы для начала выкинул LEFT там где он не нужен. Не вижу где в последнем запросе используется EXTRA_PROPS Эту таблицу опустил в примере, т.к. не она влияет на ошибочное суммирование. В таблице EXTRA_PROPS есть поле EP_ORDER, которое указывает на очередность (важность) атрибутов. По моей идее пользователь должен иметь возможность выбирать атрибуты, включаемые в отчет. Поэтому запрос набирается динамически и столбцы в TcxGridTableView, соответствующие очередности атрибутов, тоже формируются динамически. Для указания очередности и используется таблица EXTRA_PROPS. Запрос двух атрибутов (3-го и 5-го) выглядит так: Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 08:59 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Если в секцию where последнего запроса добавить условие отбора значений атрибутов, то суммирование выполняется корректно Код: sql 1.
Т.е. пользователю нужно уточнить конкретные значения атрибутов для отчета. Получить отчет без уточнения, просто в виде распределения по атрибутам, не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:08 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Marcello, Убери присоединение таблицы на каждый атрибут. Присоединяй её только один раз и тогда у тебя будет нормальный результат. Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 09:31 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Симонов ДенисMarcello, Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Ой , Ё, group by в каком непривычном виде... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 10:17 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Симонов ДенисMarcello, Убери присоединение таблицы на каждый атрибут. Присоединяй её только один раз и тогда у тебя будет нормальный результат. Теперь результат рисуется в шахматном порядке. Вместо одной строки со значениями А и Б получаю 2 строки: А - [пусто], [пусто] - Б. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 10:40 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Marcello, ну а чего ты от group by ждёшь. Ты сначала без агрегата sum попробуй настроить запрос так чтобы он по каждому товару давал набор требуемых свойств. Обверни этот запрос в CTE а потом поверх него уже группировку делай Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 11:29 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Симонов ДенисMarcello, ну а чего ты от group by ждёшь. Ты сначала без агрегата sum попробуй настроить запрос так чтобы он по каждому товару давал набор требуемых свойств. Обверни этот запрос в CTE а потом поверх него уже группировку делай Спасибо, получилось! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2015, 12:15 |
|
|
start [/forum/topic.php?fid=40&msg=39052043&tid=1562628]: |
0ms |
get settings: |
12ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 254ms |
total: | 413ms |
0 / 0 |