Форум программистов, компьютерный форум, киберфорум
Наши страницы

Microsoft SQL Server

Войти
Регистрация
Восстановить пароль
 
Inzhiner
0 / 0 / 0
Регистрация: 05.04.2014
Сообщений: 17
#1

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

16.08.2014, 14:47. Просмотров 263. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сделать выборку товара, который заведен на первом сервере и заведен и есть в наличии на 2 и 3 серверах (SQL Server):

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

Как сделать флажок(есть в наличии) в интернет магазине - HTML, CSS
Очень важно узнать. Подскажите, пожалуйста. Сайт, если надо http://www.vdpsib.ru/shop/ Добавлено через 6 минут То есть чтобы на...

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

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

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

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

3
kodv
1403 / 1077 / 235
Регистрация: 11.04.2011
Сообщений: 2,589
Завершенные тесты: 1
16.08.2014, 21:41 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Сообщений: 17
17.08.2014, 08:43  [ТС] #3
Спасибо за помощь. При исполнении запроса выдается результат 3889 позиции, по отдельности же мои запросы выдают 10009 + 1130 итого 11139
В общем не попадают позиции которые есть на 1 сервере и не существуют на 2 или 3

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

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

Как в WooCommerce удалить количество товара в наличии? - WordPress
Как в WooCommerce удалить количество товара в наличии? Надо оставить надпись "В наличии" а количество убрать. Подскажите как это...

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

Как разместить сервлет на сервере и на каком сервере это можно сделать? - Java EE
Подскажите, пожалуйста, как разместить сервлет на сервере и на каком сервере это можно сделать? Заранее спасибо!!!

Есть функция. Как сделать, что бы текст, который выводиться в Memo был не стандартного цвета? - C++ Builder
void __fastcall TForm1::Button5Click(TObject *Sender) { Memo1->SelText =...


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

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

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