Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Еще Вопрос... Очень срочно! Легкий для вас... / 13 сообщений из 13, страница 1 из 1
10.04.2003, 15:18
    #32137643
Чайник№2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Есть таблица Товары.
Код товара
Категория
Товары

Таблица Заказы
Код товара
Закано (число единиц)

Они связаны.
Надо сделать запрос, который бы вычисля число заказнных товаров по категориям товаров.
Я выбираю В запрос поле Товары.Категория И делаю группировку
И поле Заказы.Кодтовара и делаю Count. Он мне подчитывает скольок товаров было заказано, включая повторения. Т.е. если 2 раза заказали хлеб, он мне 2 раза считаетЮ, а мне надо 1 раз.
Очень надо сейчас.... помогите....
...
Рейтинг: 0 / 0
10.04.2003, 15:23
    #32137655
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
DISTINCT
...
Рейтинг: 0 / 0
10.04.2003, 15:27
    #32137662
Чайник №2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
не помогает....
...
Рейтинг: 0 / 0
10.04.2003, 15:30
    #32137671
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Запрос в студию
...
Рейтинг: 0 / 0
10.04.2003, 15:33
    #32137675
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Нужно количество товаров или количество категорий??? Если количество товаров, то 2 - это правильно! И даже лучше не Count, а Sum. А если количество категорий, то никакой Count не нужен.
...
Рейтинг: 0 / 0
10.04.2003, 15:38
    #32137681
Чайник №2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Нужно списол категорий и рядом число заказанных товаров (Т.е. если в катгории 2 товара. И один из них заказывали 5 раз, а другой ни разу, то должно получистя не число 5, а число 1 - 1 товар был заказан в данной категории).
Запрос получился такой
SELECT DISTINCT Товары.Категория,
Count([Заказы и продажи].[Код товара]) AS [Count-Код товара]
FROM Товары INNER JOIN [Заказы и продажи] ON Товары.[Код товара] = [Заказы и продажи].[Код товара]
GROUP BY Товары.Категория;
...
Рейтинг: 0 / 0
10.04.2003, 15:40
    #32137686
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Ну попробуй сделать два запроса :

1. Свяжи таблицы Товар и Заказы и измени связь, чтобы выбирались все КодаТовара из таблицы Товар (то ли левое объединение то ли правое, голова сейчас не варит). Выбири КодТовара, Категория и Заказано. Сгруппируй, а по полю Заказано - суммирование. (Sum(Nz[Заказано];0))
2. Создай новый запрос на основе тока сделаного и считай кол-во по полю Sum_Заказано.

З.Ы. Все эту шнягу можно и через подзапросы сделать (если они тебе нравяться)
...
Рейтинг: 0 / 0
11.04.2003, 08:11
    #32138099
Чайник №2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Спасибо! У меня получилось с двумя запросами!! !! !! !!
Урраааа!!!!!!!!!
...
Рейтинг: 0 / 0
11.04.2003, 08:45
    #32138117
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Получилось - это хорошо. Везет человеку. А меня сейчас гемор с запросиком на 3 страницы SQL-текста (около 90 полей). Причем каждое поле Sum(IIF(....))). Выглядит жутко. Сейчас опять мучать его буду (или он меня )
...
Рейтинг: 0 / 0
11.04.2003, 12:52
    #32138510
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Виктор, могу дать совет. Заведите таблицу или несколько, посадите в них части SQL'я и стройте его динамически. Тогда вся работа по редактированию SQL'я станет более понятной.
...
Рейтинг: 0 / 0
11.04.2003, 13:58
    #32138666
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Спасибо Владим Саныч, но для меня построить такой запросик не проблема. Да и строить его надо один раз, проблема в изменении выражений (то NZ добавить, то новое ограничение в IIF). Все поля уникальны, легко ошибиться.

Вот его мальнкая часть (так ради прикола, но с тайной надеждой вдруг кто-че дельное предложит

PARAMETERS [prmYear] Long, [prmPlant] Long;
SELECT tbl2ProductsFromPlantsWork.auPlant, tbl2ProductsFromPlantsWork.auProdName, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=1 And [auScenario]=2,nz([QuanityNatur],0),0)) AS Plan_01, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=1 And [auScenario]=1,nz([QuanityNatur],0),0)) AS Actual_01, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=1 And [auScenario]=3,nz([QuanityNatur],0),0)) AS ForeCast_01, Sum(IIf([MonthOrig]=1 And [auScenario]=1 And [YearOrig]=[prmYear]-1,nz([QuanityNatur],0),0)) AS PrevActial_01, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=2 And [auScenario]=2,nz([QuanityNatur],0),0)) AS Plan_02, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=2 And [auScenario]=1,nz([QuanityNatur],0),0)) AS Actual_02, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=2 And [auScenario]=3,nz([QuanityNatur],0),0)) AS ForeCast_02, Sum(IIf([MonthOrig]=2 And [auScenario]=1 And [YearOrig]=[prmYear]-1,nz([QuanityNatur],0),0)) AS PrevActial_02, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=3 And [auScenario]=2,nz([QuanityNatur],0),0)) AS Plan_03, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=3 And [auScenario]=1,nz([QuanityNatur],0),0)) AS Actual_03, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=3 And [auScenario]=3,nz([QuanityNatur],0),0)) AS ForeCast_03, Sum(IIf([MonthOrig]=3 And [auScenario]=1 And [YearOrig]=[prmYear]-1,nz([QuanityNatur],0),0)) AS PrevActial_03, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=4 And [auScenario]=2,nz([QuanityNatur],0),0)) AS Plan_04, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=4 And [auScenario]=1,nz([QuanityNatur],0),0)) AS Actual_04, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=4 And [auScenario]=3,nz([QuanityNatur],0),0)) AS ForeCast_04, Sum(IIf([MonthOrig]=4 And [auScenario]=1 And [YearOrig]=[prmYear]-1,nz([QuanityNatur],0),0)) AS PrevActial_04, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=5 And [auScenario]=2,nz([QuanityNatur],0),0)) AS Plan_05, Sum(IIf([YearOrig]=[prmYear] And [MonthOrig]=5 And [auScenario]=1,nz([QuanityNatur],0),0)) AS Actual_05,
...
...
...
FROM tbl2ProductsFromPlantsWork
WHERE (((tbl2ProductsFromPlantsWork.auTypeOperation)=3 Or (tbl2ProductsFromPlantsWork.auTypeOperation)=4))
GROUP BY tbl2ProductsFromPlantsWork.auKnaufPlant, tbl2ProductsFromPlantsWork.auProdName
HAVING (((tbl2ProductsFromPlantsWork.auKnaufPlant)=[prmPlant]));
...
Рейтинг: 0 / 0
11.04.2003, 14:26
    #32138738
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Счастливчик из одной таблицы...
...
Рейтинг: 0 / 0
11.04.2003, 14:33
    #32138751
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще Вопрос... Очень срочно! Легкий для вас...
Да, не: не счаствливчик. Результат этого запроса участвует в другом запросе, причем есть как INNER JOIN так и LEFT JOIN так и RIGHT JOIN.
В принципе над этими, блин, джоинами и бился.

....
....
....
FROM ((tbl0ReportsAllFormer_Main INNER JOIN tbl0ReportsIndivFormer_Main ON tbl0ReportsAllFormer_Main.auMainForAllReports = tbl0ReportsIndivFormer_Main.auMainForAllReports) INNER JOIN ((tbl0GroupsDataForReports_Main RIGHT JOIN tbl0ReportsAllFormer_Sub ON tbl0GroupsDataForReports_Main.auGroupData = tbl0ReportsAllFormer_Sub.auGroupData) INNER JOIN tbl0ReportsIndivFormer_Sub ON tbl0ReportsAllFormer_Sub.auSubForAllReports = tbl0ReportsIndivFormer_Sub.auSubForAllReports) ON tbl0ReportsIndivFormer_Main.auMainIndiv = tbl0ReportsIndivFormer_Sub.auMainIndiv) LEFT JOIN (_01 RIGHT JOIN tbl0GroupsDataForReports_Sub ON [_01].auProdName = tbl0GroupsDataForReports_Sub.auProdName) ON tbl0GroupsDataForReports_Main.auGroupData = tbl0GroupsDataForReports_Sub.auID
WHERE (((tbl0ReportsAllFormer_Main.HaveIndividReports)=True) AND ((tbl0ReportsIndivFormer_Sub.Criterion)=True) AND ((tbl0ReportsIndivFormer_Main.auKnaufPlant)=[prmPlant]))
GROUP BY tbl0ReportsIndivFormer_Main.auMainIndiv, tbl0ReportsAllFormer_Sub.auMainForAllReports, tbl0ReportsAllFormer_Sub.ID_MainForAllReports, String$([NumberOfLevel]*3,".") & [NameOfRow_rus]
HAVING (((tbl0ReportsAllFormer_Sub.auMainForAllReports)=[prm_auMainForAllReports]))
ORDER BY tbl0ReportsIndivFormer_Main.auMainIndiv, tbl0ReportsAllFormer_Sub.ID_MainForAllReports;
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Еще Вопрос... Очень срочно! Легкий для вас... / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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