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

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

16.08.2014, 14:47. Просмотров 275. Ответов 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 и вывелись количество товаров.
Может я не правильно мыслю и есть другой способ решения ...
http://www.cyberforum.ru/vba/thread213890.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2014, 14:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сделать выборку товара, который заведен на первом сервере и заведен и есть в наличии на 2 и 3 серверах (SQL Server):

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

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

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

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

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

3
kodv
1417 / 1091 / 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 / 1
Регистрация: 05.04.2014
Сообщений: 23
17.08.2014, 08:43  [ТС] #3
Спасибо за помощь. При исполнении запроса выдается результат 3889 позиции, по отдельности же мои запросы выдают 10009 + 1130 итого 11139
В общем не попадают позиции которые есть на 1 сервере и не существуют на 2 или 3

Добавлено через 56 минут
В общем дальнейшие манипуляции с isnull исправили ситуацию.
0
kodv
1417 / 1091 / 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 удалить количество товара в наличии? Надо оставить...

Выводить количество товара в наличии на главной странице каталога
Доброго времени суток! У нас на сайте реализована такая вещь что человек с...

Есть JS код, который по буквам выводит текст, как сделать перенос строки?
Всем привет! Есть JS код, который делает эффект печатания текста, т.е. выводит...


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

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

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