powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Интересная задачка :)
8 сообщений из 8, страница 1 из 1
Интересная задачка :)
    #39336963
Сэр Мюллих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день уважаемые форумчане!
Очередная контора прислала интересное ТЗ. Создаю тему в Акцессе, потому как сейчас нет возможности протестировать решение на сервере.

Начну, для было большим удивлением и стопором, что в акцессе не работает вложенность функций! Или это я такой старый или я чего-то не понимаю, но

count(distinct поле) - в акцессе не работает(в sql ms точно работает, возможно, я был там сразу решение и наваял)
Подозреваю, что здесь без подзапросов и группировки не обойтись.
В общем-то интересует момент как во втором поле Tab2 посчитать уникальные значения, сгруппировав при этом вывод по первому полю.
Интересно будет посмотреть варианты как на акцессе, так и не на акцессе

Приглашаю вас к решению данной задачи. Попробуем её решить :)
...
Рейтинг: 0 / 0
Интересная задачка :)
    #39336966
Сэр Мюллих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прилагаю бд для удобства
...
Рейтинг: 0 / 0
Интересная задачка :)
    #39336968
Сэр Мюллих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опа, а что это интересно имеется ввиду?

Источники: Tab2 - один товар - одна строка; Tab3 - 1 операция - 1 строка

Это типа мы можем какие-то повторяющие строки по товарам в Tab2 исключить? Товаров то несколько...
Тоже самое касается 1 операция - 1 строка в Tab3...
Чот совсем непонятно, что имеется ввиду...
...
Рейтинг: 0 / 0
Интересная задачка :)
    #39336970
Сэр Мюллих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, ну да в обще-то то о чём и писал вначале.


SELECT Tab2.ID_delivery, Count(Tab2.ID_agent) AS [Count-ID_agent]
FROM Tab2
GROUP BY Tab2.ID_delivery;


Этот запрос считает общее количество агентов, даже неуникальные. Но я так понял, что нужно посчитать количество агентов онлайн и вот тут не уточняется каким образом нужно их посчитать: уникально или неуникально?
...
Рейтинг: 0 / 0
Интересная задачка :)
    #39336978
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сэр Мюллих...Так, ну да в обще-то то о чём и писал вначале...
А вы точно сейчас с Нами?
Ни одного ответа на ваш вопроспока не заметил, видима просто думают..
Это наводит на мрачные мысли.
Вы точно не разговариваете сами с собой?
Мне как доктору немного это интересно для .
...
Рейтинг: 0 / 0
Интересная задачка :)
    #39337052
Сэр Мюллих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем удалось реализовать первые два столбца результата:

Select
t1.ID_delivery as [№ поставки],
count(t1.ID_agent) as [Кол-во агентов оффлайн],
count(t1.IS_agent) as [Кол-во отгруженных товаров оффлайн]
from (SELECT DISTINCT ID_agent, ID_delivery, IS_agent FROM Tab2) as t1
where t1.IS_agent = 'y'
group by t1.ID_delivery
;

Подскажите кто-то, пожалуйста, как дальше наполнять результат?
Если я добавляю подзапросом новый столбец по условию что я считаю количество утил товара, то у меня вообще каша получается.
...
Рейтинг: 0 / 0
Интересная задачка :)
    #39337054
Сэр Мюллих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Также я написал отдельным запросом подсчёт утил товара:

SELECT ID_delivery, Count(IS_util) AS util
FROM (SELECT ID_delivery, IS_util FROM Tab2)
where IS_util like 'y'
GROUP BY ID_delivery
;

Как теперь запихнуть правильно это в дополнительный столбец первого запроса?
...
Рейтинг: 0 / 0
Интересная задачка :)
    #39337057
Сэр Мюллих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось вот что:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Select 
t1.ID_delivery as [№ поставки], 
count(t1.ID_agent) as [Кол-во агентов оффлайн], 
count(t1.IS_agent) as [Кол-во отгруженных товаров оффлайн],
t2.ID_delivery - вот здесь
from (SELECT DISTINCT ID_agent, ID_delivery, IS_agent FROM Tab2) as t1
inner join (SELECT ID_delivery, Count(IS_util) AS util
FROM (SELECT ID_delivery, IS_util FROM Tab2)
where IS_util like 'y'
GROUP BY ID_delivery) as t2
on t1.ID_delivery = t2.ID_delivery
where t1.IS_agent = 'y'
group by t1.ID_delivery, t2.ID_delivery


;

вместо t2.ID_delivery, хочу видеть поле Count(IS_util) AS util , но как бы я не объявлял это поле - ошибка

Модератор: Сэр Мюллих, оформляйте код в тэгах. Это в ваших же интересах, читающим легче разобраться
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Интересная задачка :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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