|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
Всем доброго времени суток. Есть два запроса в пакете. Никак не соображу, как мне результаты этих запросов вывести в одну таблицу. Если делать так: Код: 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97.
То у меня строки задваиваются в тех местах, где распродаж меньше чем новинок и наоборот. Как сделать так, чтоб группировка и итоги считались по производителю, а новинка и распродажа находились в одной строке, только если это один и тот же товар? Например так: - Производитель1 --- Товар1 | NULL --- Товар2 | NULL --- NULL | Товар3 --- Товар4 | Товар4 --- NULL | Товар5 Заранее всем спасибо. P.S. Платформа 8.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 14:34 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
Всё, уже не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 15:06 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
LittleLoyaВсё, уже не надо.ну ведь потомки будут искать, найдут твою тему. Некрасиво. когда нет ответа. Для потомков: ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 15:55 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
Владимир Лазурко, спасибо, мне тоже пригодится! Для потомков - в моём случае нужно было сделать так Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:48 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
Точно? Юнион олл правильно используете? Не морочте голову потомкам ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 09:15 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
Я бы написал этот запрос по другому ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 09:43 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
sWinTyz, а как по другому? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 11:23 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
LittleLoyasWinTyz, а как по другому?Прежде всего озвучьте конечную цель запроса. Ведь "соединить" можно по-разному, исходя из требоуемого результата. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2017, 18:02 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
Владимир Лазурко, Конечная цель запроса: 1. Выбрать все товары с определённым свойством, которые есть в поступлениях за определённый период (новинки). 2. Выбрать все товары с определённой категорией, которые есть на складах на конец периода (распродажа). 3. Выбрать все товары с той же категорией, которые продавались за период, независимо от того, есть они в наличие или нет. 4. Выбрать все продажи по товарам из 1-ой таблицы. Всё это соединить в одну таблицу по производителю. Например: Новинок Распродаж Продано новинок Продано распродаж -Производитель1 10 15 1 3 --Товар1 10 0 1 0 --Товар2 0 5 0 3 --Товар3 0 10 0 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2017, 13:49 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
LittleLoya , Да. Полных соединений и декартовых произведений таблиц по старому стилю (через запятую) я в 1С запросах давно не видел. Всегда хватало Внутреннего, Левого и Объединения. Кстати вы представляете, во что развернет ваш запрос 1С при трансляции MSSQL? Куча записей через через две точки в соединениях, подзапросы соединяются с подзапросами. И в конце FULL JOIN ом соединяете таблицы, а итоговая обработка запроса передается серверу 1С, в секции Итоги По. Лучше все таки переписать запрос, от греха подальше, особенно если БД высоко нагружена. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2017, 14:55 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
LittleLoya, "Пять способов подстегнуть производительность SQL" Джонни ПапаПочему-то декартовы произведения (CROSS JOIN) пользуются дурной славой, и разработчиков зачастую призывают вообще отказаться от них. Во многих случаях CROSS JOIN действительно приводят к неэффек- тивному использованию ресурсов. Но их надо применять с умом — как и любой другой инструмент SQL. .... CROSS JOIN следует использовать с осторожностью, так как его выпол- нение требует очень много ресурсов. Например, результат, достигаемый запросом CROSS JOIN, в котором применяются блоки WHERE, DISTINCT или GROUP BY, отфильтровывающие большинство строк, можно получить гораздо более эффективным внутренним объединением (INNER JOIN). Декартовы произведения очень полезны, когда вам нужны сово- купные данные, например для построения графика. Но для других задач декартовы произведения лучше не использовать — в большинстве случа- ев внутренние объединения гораздо эффективнее. Мешать стили - часть запросов с joint, а часть через запятую во from - дурной тон. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2017, 16:27 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
vitkhv, спасибо, но как в итоге в моём случае нужно переписать запрос, чтоб он не нагружал базу, но выдавал верный результат? Ведь внутреннее соединение тут не подойдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2017, 11:23 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
LittleLoya, Давайте начнем с того, что внутреннее соединение всегда эффективней внешних. Но если с точки зрения логики мы не можем использовать внутреннее, тогда используем Левое. Все остальные соединения лучше не используем. Например в случае использования правого соединения велик шанс получить план с хэш джоином, там где могут быть более эффективные вложенные циклы. Что касается первого запроса : ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект Меняем на ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение = &Значение Соответсвенно это: Код: sql 1. 2.
убираем из где. Наводка вместо Полных соединений используем Код: sql 1.
и Код: sql 1.
. Таблица Производитель вообще не нужна. Убираем из ГДЕ и переносим в параметры виртульной таблицы Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Либо вообще формируем это через временную таблицу, а потом уже передаем во временную, так будет еще эффективней и можно добавить доп поля. Избавляемся от двух точек. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2017, 12:08 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
LittleLoya, Ну и смотрим планы, без этого оптимизировать тяжело. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2017, 12:30 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
LittleLoya, Да и еще забыл: Полусоединения используйте тоже на ряду с внутренним и левым. Вот это: Код: sql 1. 2. 3. 4. 5. 6. 7.
С большой вероятностью Вызовет физическое полусоединение. Но для явного вызова логического полусоединения Exist. В 1С можно написать так: Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2017, 15:17 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2017, 16:01 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
vitkhv, спасибо большое, попробую по Вашим рекомендациям запрос переписать, о результате отпишусь обязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2017, 17:59 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
vitkhvLittleLoya, Что касается первого запроса : ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект Меняем на ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение = &Значение Соответсвенно это: Код: sql 1. 2.
убираем из где. Спасибо, это сделала. vitkhvТаблица Производитель вообще не нужна. Как это не нужна? Я же по ней объединяю товары и производителей, по которым будет группировка. Дело в том, что новинки и распродажа могут пересекаться по товарам только в случае ошибки в данных, а в теории они всегда разные, т.к. новинка не может быть распродажей и наоборот. vitkhv Либо вообще формируем это через временную таблицу, а потом уже передаем во временную, так будет еще эффективней и можно добавить доп поля. Вынесла в отдельную временную таблицу, спасибо. vitkhvLittleLoya, Ну и смотрим планы, без этого оптимизировать тяжело. А что за планы? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:18 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
vitkhvПолных соединений и декартовых произведений таблиц по старому стилю (через запятую) я в 1С запросах давно не видел за "через запятую" можно некисло отхватить граблями по спине если одна из таблиц будет пуста ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:30 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:31 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
О каких запятых идёт речь? Я больше половины слов и фраз из комментариев не понимаю :( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:48 |
|
Как объединить результат двух запросов?
|
|||
---|---|---|---|
#18+
Пришелец-прорабvitkhvПолных соединений и декартовых произведений таблиц по старому стилю (через запятую) я в 1С запросах давно не виделА В ИЕРАРХИИ по одной или нескольким группам иерархического справочника? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2017, 23:06 |
|
|
start [/forum/topic.php?fid=28&msg=39558300&tid=1518435]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 254ms |
total: | 540ms |
0 / 0 |