Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Inzhiner
0 / 0 / 0
Регистрация: 05.04.2014
Сообщений: 23
1

Сделать выборку товара, который заведен на первом сервере и заведен и есть в наличии на 2 и 3 серверах

16.08.2014, 14:47. Просмотров 882. Ответов 3
Метки нет (Все метки)

Привет читатель.
Не могу разобраться с операцией Union
Есть три идентичные таблицы, только на разных серверах.
Необходимо сделать выборку товара который заведен на первом сервере(есть в наличии) и заведен и есть в наличии на 2 и 3 серверах.


Составил два запроса:
Проверка товара между 1 и 2 сервером
SQL
1
2
3
4
5
6
7
8
9
SELECT 
        s.COD_ARTIC,
        s.REZ_KOLCH fs_s,
        isnull(ROUND(r.REZ_KOLCH,-1),0) fs_r    
    FROM  s.dbo.SCL_ARTC s 
        LEFT OUTER JOIN (SELECT r1.cod_artic, r1.rez_kolch FROM [192.168.2.0].base1.dbo.scl_artc r1 ) AS r(cod_artic,  rez_kolch)
        ON r.COD_ARTIC=s.COD_ARTIC 
    WHERE
    AND (s.REZ_KOLCH > 0 OR isnull(r.REZ_KOLCH,0) > 0)

Проверка товара между 1 и 3 сервером

SQL
1
2
3
4
5
6
7
8
9
SELECT 
        s.COD_ARTIC,
        s.REZ_KOLCH fs_s,
        isnull(ROUND(u.REZ_KOLCH,-1),0) fs_u
    FROM  s.dbo.SCL_ARTC s 
        LEFT OUTER JOIN (SELECT u1.cod_artic, u1.rez_kolch FROM [192.168.3.0].base2.dbo.scl_artc u1 ) AS u(cod_artic, rez_kolch)
        ON u.COD_ARTIC=s.COD_ARTIC 
    WHERE
        isnull(u.REZ_KOLCH,0) > 0
По отдельности запросы выполняются.
Теперь не могу понять как объединить два запроса и получить общий результат. Если ставлю между запросами Union то мне выводятся сначала данные по первому запросу потом по второму, а мне нужно что бы данные сгруппировались по полю s.COD_ARTIC и вывелись количество товаров.
Может я не правильно мыслю и есть другой способ решения ...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2014, 14:47
Ответы с готовыми решениями:

Рассчитать стоимость товара который есть на составе
Создать программу языком VBA с помощью которой можно ввести наименование...

Как сделать флажок(есть в наличии) в интернет магазине
Очень важно узнать. Подскажите, пожалуйста. Сайт, если надо...

Сделать инклуд файла который находится на другом сервере
В общем у меня есть вопрос возможно ли сделать инклуд файла который находится...

Помогите с функциями в Excel.... Есть набор значений нужно сделать выборку
Есть столбец значений. 1000 1100 1110 1111 1112 1113 1114 1115 1120

Как сделать выборку, если в слове есть кавычка (single quote)?
В базе попадаются поля(города), в которых есть ' .Как делать выборку в таких...

3
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
16.08.2014, 21:41 2
Лучший ответ Сообщение было отмечено Inzhiner как решение

Решение

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT s.COD_ARCTIC,
        SUM(s.REZ_KOLCH) KOLCH1,
        SUM(r.REZ_KOLCH) KOLCH2,
        SUM(u.REZ_KOLCH) KOLCH3
    FROM s.dbo.SCL_ARTC s
        JOIN [192.168.2.0].base1.dbo.scl_artc r
            ON r.COD_ARCTIC = s.COD_ARCTIC
                AND r.REZ_KOLCH > 0
        JOIN [192.168.3.0].base2.dbo.scl_artc u
            ON u.COD_ARCTIC = s.COD_ARCTIC
                AND u.REZ_KOLCH > 0
    WHERE s.REZ_KOLCH > 0
    GROUP BY s.COD_ARCTIC
1
Inzhiner
0 / 0 / 0
Регистрация: 05.04.2014
Сообщений: 23
17.08.2014, 08:43  [ТС] 3
Спасибо за помощь. При исполнении запроса выдается результат 3889 позиции, по отдельности же мои запросы выдают 10009 + 1130 итого 11139
В общем не попадают позиции которые есть на 1 сервере и не существуют на 2 или 3

Добавлено через 56 минут
В общем дальнейшие манипуляции с isnull исправили ситуацию.
0
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
17.08.2014, 09:05 4
Цитата Сообщение от Inzhiner Посмотреть сообщение
В общем не попадают позиции которые есть на 1 сервере и не существуют на 2 или 3
Это из-за неправильно поставленной задачи:
Цитата Сообщение от Inzhiner Посмотреть сообщение
который заведен на первом сервере(есть в наличии) и заведен и есть в наличии на 2 и 3 серверах
Из постановки задачи следует (по крайней мере я так понял), что товар должен быть заведен на всех трех серверах.

Добавлено через 1 минуту
Но хорошо то, что вы сами смогли допилить запрос под свои нужды. Не все, кто просят помощи здесь, в состоянии это сделать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2014, 09:05

Сделать выборку из таблицы, то есть выписать данные в зависимости от того или иного значения
Доброго времени суток, подскажите, мне надо сделать выборку из таблицы тоесть...

Нужно изменить количество товара в наличии
Здравствуйте! Есть база данных магазина, в которой нужно изменить количество...

Как в WooCommerce удалить количество товара в наличии?
Как в WooCommerce удалить количество товара в наличии? Надо оставить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru