powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Объединение таблиц с условием
21 сообщений из 21, страница 1 из 1
Объединение таблиц с условием
    #39162569
Lastig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех.
Не могу решить небольшую задачку.
Есть две таблицы(мфц и тосп)
Нужно посчитать разницу кол-ва услуг м/у мфц и тосп.
Получилось сделать только вывод тех полей которые совпадают в таблице, а тех что не совпадает пишет пустой результат.
Прошу помощи. Базу приложил.
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162575
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего у вас некоторые поля пустые, тогда их нужно обрамить в Nz, как то примерно вот так:
SELECT DISTINCT мфц.Услуга, Nz([мфц]![Количество],0)-Nz([тосп]![Количество],0) AS Разница
FROM мфц LEFT JOIN тосп ON мфц.Услуга = тосп.Услуга;
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162581
Lastig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за помощь.
тут усложнили задачу, у нас несколько таких тоспов
пробую сначала суммировать тоспы а потом вычитать из мфц, опять нулевые строки выводит
и при суммировании количества услуг в тоспах тоже выодит не все значения
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162589
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lastig,

Архив, чей та не открывается.
Наверное сначала нужно в одном запросе сложить все тоспы, а потом данный запрос указывать во втором запросе вместо первой таблицы?
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162596
Lastig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
суммирование тоспов тоже не все строки выводит
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162600
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lastig,

Зачем столько однотипных таблиц?
Я бы вот наверное в табл. тосп добавил еще 1 поле, - Тип или Номер и групприровал по нему.
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162602
Lastig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это мне присылают из разных районов таблицы с отчетами и мне их надо объединить
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162616
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lastig,

А если их будет 100 районов? трудно представить.
Ну да вот накидал, может так:
Точно или нет, сказать не могу, т. к. у меня Акс 2000 и не все Аксы 2007-10 открываются, делал в конструкторе.
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162617
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чей та файл не приложился.
Попробуйте создать такие 2 запроса:

Тоспы

SELECT тосп.Услуга, Nz([тосп]![Количество],0)+Nz([тосп2]![Количество],0)+Nz([тосп3]![Количество],0)+Nz([тосп4]![Количество],0) AS Сумма
FROM ((тосп LEFT JOIN тосп2 ON тосп.Услуга=тосп2.Услуга) LEFT JOIN тосп3 ON тосп2.Услуга=тосп3.Услуга) LEFT JOIN тосп4 ON тосп3.Услуга=тосп4.Услуга;

и

Разница

SELECT DISTINCT мфц.Услуга, Nz([мфц]![Количество],0)-(Nz([Тоспы]![Сумма],0)) AS Разница
FROM мфц LEFT JOIN Тоспы ON мфц.Услуга = Тоспы.Услуга;
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162627
Lastig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT тосп.Услуга, Nz([тосп]![Количество],0)+Nz([тосп2]![Количество],0)+Nz([тосп3]![Количество],0)+Nz([тосп4]![Количество],0) AS Сумма
FROM ((тосп LEFT JOIN тосп2 ON тосп.Услуга=тосп2.Услуга) LEFT JOIN тосп3 ON тосп2.Услуга=тосп3.Услуга) LEFT JOIN тосп4 ON тосп3.Услуга=тосп4.Услуга;

так считает только те усдуги которе есть в 1 таблице(тосп) их там 19
а во второй уже 22, но итоговая все равно 19
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162635
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала составьте запрос, который собирает все возможные услуги из всех таблиц. Типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
  SELECT [Услуга] FROM [мфц]
UNION
  SELECT [Услуга] FROM [тосп]
UNION
...
UNION
  SELECT [Услуга] FROM [тосп4]


И только потом привязывайте к результату левым связыванием отдельные таблицы (МФЦ и все либо только нужные ТОСП).
Если же нужно получить разницу между МФЦ и суммарно, а не по отдельности, всеми ТОСП, то составьте запрос, который суммирует услуги всех ТОСПов (используя первый запрос и все таблицы ТОСП), а потом вяжите его и таблицу МФЦ к первому запросу.
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162637
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё лучше - если данные нормализовать. Для чего, во-первых, вынести услуги в отдельную таблицу, во-вторых, собрать все данные по количеству в одну таблицу, добавив поле, идентифицирующее предоставляющую организацию.
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162641
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lastig,

я бы видимо сделала так(через объединение или рабочую таблицу)+перекрестный запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT "mfc" as ztyp,[Код], [Услуга], [Количество] FROM [мфц]
union all
SELECT "тосп",Код,Услуга,Количество FROM тосп
union all
SELECT "тосп2",Код, Услуга, Количество FROM тосп2
union all
SELECT "тосп3",Код, Услуга, Количество FROM тосп3
UNION ALL 
SELECT "тосп4",Код, Услуга, Количество FROM тосп4;
Услуга\mfc\тосп\тосп2\тосп3\тосп4


(Кадастр.) Государственная услуга по предоставлени1(Кадастр.) Государственная услуга по предоставлению сведений, содержащихся в Едином государственном реестре прав на недвижимое имущество и сделок с ним8(Росреестр) Государственная услуга по предоставлению сведений, содержащихся в Едином государственном реестре прав на недвижимое имущество и сделок с ним341Выдача градостроительных планов1Выдача градостроительных планов земельных участков на территории Владивостокского городского округа, Артемовского городского округа, Надеждинского муниципального района, Шкотовского муниципального района2111Выдача документа о присвоении наименований улицам, площадям и иным территориям проживания граждан в Артемовском городском округе, а также об установлении нумерации домов, расположенных на территории городского округа1Выдача простой электронной подписи (ПЭП)63274Выдача разрешений на строительство1611Выдача свидетельства ИНН20622Выдача СНИЛС21Выдача справок о наличии (отсутствии) судимости и 12Выдача справок о наличии (отсутствии) судимости и (или) факта уголовного преследования либо о прекращении уголовного преследования6012Выдача, замена паспорта гражданина Российской Федерации, удостоверяющего личность гражданина Российской Федерации на территории Российской Федерации24211Государственная услуга по государственной регистра9Государственная услуга по государственной регистрации прав на недвижимое имущество и сделок с ним43811221Государственная услуга по государственной регистрации юридических лиц, физических лиц в качестве индивидуальных предпринимателей и крестьянских (фермерских) хозяйств3......Регистрация многодетных семей на территории Примор1Регистрация многодетных семей на территории Приморского края1Утверждение схемы расположения земельного участка или земельных участков, находящихся в ведении или собственности Приморского края, на кадастровом плане территории12
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162643
LastigSELECT тосп.Услуга, Nz([тосп]![Количество],0)+Nz([тосп2]![Количество],0)+Nz([тосп3]![Количество],0)+Nz([тосп4]![Количество],0) AS Сумма
FROM ((тосп LEFT JOIN тосп2 ON тосп.Услуга=тосп2.Услуга) LEFT JOIN тосп3 ON тосп2.Услуга=тосп3.Услуга) LEFT JOIN тосп4 ON тосп3.Услуга=тосп4.Услуга;

так считает только те усдуги которе есть в 1 таблице(тосп) их там 19
а во второй уже 22, но итоговая все равно 19
так попробуйте
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT Услуга SUM(Количество) AS Сумма
FROM 
(
SELECT Услуга,Количество FROM тосп  UNION ALL
SELECT Услуга,Количество FROM тосп2 UNION ALL
SELECT Услуга,Количество FROM тосп3 UNION ALL
SELECT Услуга,Количество FROM тосп4
)
GROUP BY Услуга
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162645
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lastig,


не туда залетела первая строка
Услугаmfcтосптосп2тосп3тосп4(Кадастр.) Государственная услуга по предоставлени1(Кадастр.) Государственная услуга по предоставлению сведений, содержащихся в Едином государственном реестре прав на недвижимое имущество и сделок с ним8
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162657
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lastig,

или

[мфц Запрос2]
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT "mfc" as ztyp,[Код], [Услуга], [Количество] FROM [мфц]
union all
SELECT "тосп",Код,Услуга,-Количество FROM тосп
union all
SELECT "тосп2",Код, Услуга, -Количество FROM тосп2
union all
SELECT "тосп3",Код, Услуга, -Количество FROM тосп3
UNION ALL 
SELECT "тосп4",Код, Услуга, -Количество FROM тосп4



Код: sql
1.
2.
3.
4.
5.
SELECT [мфц Запрос2].Услуга,
 Sum([мфц Запрос2].Количество) AS [разница мфс и тосп],
iif(Sum([мфц Запрос2].Количество)>0,"","нет в мфц") as примечание
FROM [мфц Запрос2]
GROUP BY [мфц Запрос2].Услуга


Услугаразница мфс и тосппримечание(Кадастр.) Государственная услуга по предоставлени-1нет в мфц(Кадастр.) Государственная услуга по предоставлению сведений, содержащихся в Едином государственном реестре прав на недвижимое имущество и сделок с ним8(Росреестр) Государственная услуга по предоставлению сведений, содержащихся в Едином государственном реестре прав на недвижимое имущество и сделок с ним33Выдача градостроительных планов1Выдача градостроительных планов земельных участков на территории Владивостокского городского округа, Артемовского городского округа, Надеждинского муниципального района, Шкотовского муниципального района19Выдача документа о присвоении наименований улицам, площадям и иным территориям проживания граждан в Артемовском городском округе, а также об установлении нумерации домов, расположенных на территории городского округа1Выдача простой электронной подписи (ПЭП)50Выдача разрешений на строительство14Выдача свидетельства ИНН10Выдача СНИЛС1Выдача справок о наличии (отсутствии) судимости и -12нет в мфцВыдача справок о наличии (отсутствии) судимости и (или) факта уголовного преследования либо о прекращении уголовного преследования57Выдача, замена паспорта гражданина Российской Федерации, удостоверяющего личность гражданина Российской Федерации на территории Российской Федерации20Государственная услуга по государственной регистра-9нет в мфцГосударственная услуга по государственной регистрации прав на недвижимое имущество и сделок с ним404Государственная услуга по государственной регистрации юридических лиц, физических лиц в качестве индивидуальных предпринимателей и крестьянских (фермерских) хозяйств3Государственная услуга по государственному кадастр-2нет в мфц
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162666
Lastig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уже куда то далеко полезли)))
мне гнадо просто посчитать сумму всех услуг на тоспах и отнять её из мфц)))
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162688
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lastig...уже куда то далеко полезли...
Тогда, что бы без всяких там костылей в виде сверхсложных запросов, нужно как уже писалось выше - нормализовать БД.
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162700
Lastig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
совместными усилиями вот что получилось
еще бы нулевые строки не отображались
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39162703
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lastig,

При отсутствии внятного ТЗ и непонятных сокращений в именах таблиц, можно предположить что наверное нужно сотворять БД по вот такой схеме, возиожно цены на услуги надо отразить.
...
Рейтинг: 0 / 0
Объединение таблиц с условием
    #39163446
Lastig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь!
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Объединение таблиц с условием
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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