powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание запроса с группировкой по трем не связанным таблицам
7 сообщений из 7, страница 1 из 1
Создание запроса с группировкой по трем не связанным таблицам
    #40111486
Nogop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даны 3 таблицы в СУБД MS Access.

Таблица "Отделы": название отдела, номер отдела.

Таблица "Малоценка": номер отдела к которому относится запись, наименование товара, кол-во принятого товара, кол-во списанного товара и цена за ед. товара.

Таблица "Основные": номер отдела к которому относится запись, наименование товара, кол-во принятого товара, кол-во списанного товара и цена за ед. товара.

В таблицах "Основные" и "Малоценка" может быть по несколько записей относящихся к одному отделу.

Между этими таблицами нет никакой связи (по условию связей быть не должно). Необходимо разработать запрос, который будет группировать записи из таблиц "Малоценка" и "Основные" по номеру отдела из таблицы "Отделы". При группировке происходит суммирование стоимости списанных и принятых товаров из таблиц "Основные" и "Малоценка" для каждого отдела.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL запрос, который получится у меня:
SELECT Отделы.Отдел, 
Sum([Основные]![Прийнято][Основные]![Цена]) AS ПрийнятоОсн, 
Sum([Основные]![Списано][Основные]![Цена]) AS СписаноОсн, 
Sum([Основные]![Прийнято][Основные]![Цена]) - Sum([Основные]![Списано][Основные]![Цена]) AS НаличиеОсн, 
Sum([Малоценка]![Прийнято][Малоценка]![Цена]) AS ПрийнятоМал, 
Sum([Малоценка]![Списано][Малоценка]![Цена]) AS СписаноМал, 
Sum([Малоценка]![Прийнято][Малоценка]![Цена]) - Sum([Малоценка]![Списано][Малоценка]![Цена]) AS НаличиеМал
FROM Отделы, Основные, Малоценка
GROUP BY Отделы.Отдел;



Этот запрос вместо суммирования данных по каждому отделу суммирует данные по всем отделам и потом выводит одинаковый результат для каждого отдела.
...
Рейтинг: 0 / 0
Создание запроса с группировкой по трем не связанным таблицам
    #40111617
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nogop,

Вам нужно указать как соединяются таблиц, иначе получаете Cross Join

Код: sql
1.
2.
3.
FROM 
  (Отделы left join Основные on Отделы.Отдел = Основные .Отдел)
  left join Малоценка on Отделы.Отдел = Малоценка .Отдел




если нужно убрать отделы без данных

Код: sql
1.
2.
Where 
  not isnull(Основные .Отдел) or not isNull(Малоценка .Отдел)
...
Рейтинг: 0 / 0
Создание запроса с группировкой по трем не связанным таблицам
    #40111634
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ACCESS есть СУРБД (система управления реляционными базами данных:англ. relation-отношение, зависимость, связь.)
иначе это просто электронные таблицы (EXCEL). Таблицы в ACCESS должны быть связаны,иначе логика работы БД не понятна(от слова совсем)
...
Рейтинг: 0 / 0
Создание запроса с группировкой по трем не связанным таблицам
    #40111665
Nogop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111,

Переделал запрос, теперь считает правильно только те отделы, для которых есть записи только в одной из таблиц. Для 11 отдела в таблице "Основные" есть 6 записей, а в таблице "Малоценка" только 4. При операции join left записи из этих двух таблиц перемножаются. В итоге получается по 24 записи вместо 6 и 4 записей.
...
Рейтинг: 0 / 0
Создание запроса с группировкой по трем не связанным таблицам
    #40111772
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swa111
Nogop,
...Вам нужно указать как соединяются таблиц, иначе получаете Cross Join...
Все верно: 6х4=24-связей-то нету
...
Рейтинг: 0 / 0
Создание запроса с группировкой по трем не связанным таблицам
    #40111811
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nogop,

Тогда соберите агрегаты по каждой таблице, а потом соединитесь

Код: sql
1.
2.
3.
4.
5.
6.
FROM 
  (Отделы left join 
    (select Отдел , sum(... from Основные group by Отдел 
    ) as Основные on Отделы.Отдел = Основные .Отдел)
  left join (select Отдел , sum(... from Малоценка group by Отдел 
    ) as Малоценка on Отделы.Отдел = Малоценка .Отдел
...
Рейтинг: 0 / 0
Создание запроса с группировкой по трем не связанным таблицам
    #40111820
Nogop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111,
Большое спасибо, теперь все работает корректно.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание запроса с группировкой по трем не связанным таблицам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]