Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как объединить результаты двух запросов в одну таблицу?  [new]
tooTired
Member

Откуда:
Сообщений: 7
Хаю хай, собсна, в теме вся суть проблемы. Есть несколько таблиц, из которых необходимо составить результат запроса по соответствующим параметром. Грубо говоря, есть таблицы A B и C. Нужно объединить результаты запроса по таблицам А и В и А и С по общей таблице А. Проблема в том, что если делать один запрос по трём таблицам, то получаю некорректные значения. Для наглядности прикладываю скрин того, шо хочу получить.

К сообщению приложен файл. Размер - 14Kb
23 май 16, 20:47    [19209456]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить результаты двух запросов в одну таблицу?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
https://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume

П. 6
23 май 16, 21:20    [19209530]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить результаты двух запросов в одну таблицу?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
tooTired
Проблема в том, что если делать один запрос по трём таблицам, то получаю некорректные значения.
Наверное, он просто неправильный? Покажите хоть, что написали.
23 май 16, 21:30    [19209545]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить результаты двух запросов в одну таблицу?  [new]
tooTired
Member

Откуда:
Сообщений: 7
alexeyvg,

балин, нечаянно жмякнул раньше времени.
SELECT distinct Publisher.Наименование AS 'Издательство', COUNT(Book.ID_Издательства) AS 'Количество книг', SUM(Sale.Сумма) AS 'Итого'
FROM (Book join Publisher on Book.ID_Издательства=Publisher.ID join Sale on sale.ID_Книги=Book.ID)
GROUP BY Publisher.Наименование;

Суть: есть таблица Publisher - там издательства, есть таблица Book - там книги, у них внешние ключи - ID издательства. таблица Sale - информация о продаже той или иной книги, FK - Book.ID. Необходимо получить таблицу, в которой для каждого известного издательства приведена информация о количестве наименований книг (именно наименований, то есть какие книги публиковало издательство, а не сколько было продано),
COUNT(Book.ID_Издательства)

а также сумма с продаж книги с определённым названием
SUM(Sale.Сумма)

У меня проблема в том, что, как я понял, count(Book.ID_Издательства) у меня считается несколько раз, если в таблице Sale фигурирует книга одного и того же издателя. То есть грубо говоря у меня количество когда-либо изданных книг считается по таблице Sale, что ли. И вот я и подумал, что раз я могу получить нужную мне информацию по отдельности, может в t-sql есть какой нибудь способ объединить результаты двух запросов? Или придётся создавать временную таблицу, наполнять её содержимым через select into, а потом через select * отображать содержимое, и потом удалять временную таблицу через drop table?
23 май 16, 23:55    [19209890]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить результаты двух запросов в одну таблицу?  [new]
iljy
Member

Откуда:
Сообщений: 8711
tooTired,

SELECT *
FROM (select ID_Издательства, count(*) cnt from Book GROUP BY ID_Издательства) b
     join Publisher p on b.ID_Издательства=p.ID 
24 май 16, 00:42    [19209929]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить результаты двух запросов в одну таблицу?  [new]
tooTired
Member

Откуда:
Сообщений: 7
Нашлось решение проблемы, в общем. Если кому вдруг понадобится (ну а вдруг?) - вот, что помогло в моей ситуации:
SELECT distinct Publisher.Наименование AS 'Издательство', count(distinct Book.ID) AS 'Количество книг',isnull( SUM(Sale.Сумма),0) AS 'Итого'
FROM (Publisher left join Book on Publisher.ID=Book.ID_Издательства left join Sale on Sale.ID_Книги=Book.ID)
--Publisher JOIN Book ON Publisher.ID=Book.ID_Издательства left outer JOIN Sale ON Sale.ID_Книги = Book.ID)
GROUP BY Publisher.Наименование;


На этом тему можно закрыть
24 май 16, 09:26    [19210363]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить