|
|
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
изучаю Грабера... (отучаюсь от конструктора запросов) есть табличка с полями SNUM и AMT (номер продавца и количество проданного за день) нужно найти продавца который имеет максимальные продажи делаю так: SELECT Top 1 Orders.SNUM, Sum(Orders.AMT) FROM Orders GROUP BY Orders.SNUM ORDER BY Sum(Orders.AMT) DESC; Вопрос как написать лучше или это нормальный метод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:10 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
select max([FieldName]) as [Alias] from [TableName] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:43 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
вот ещё вопросик как найти количество продавцов? по граберу делается так: SELECT count (distinct SNUM) FROM Orders в аксессе такое не прокатывает, так же как SELECT count (*) FROM Orders ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:43 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Hummer я не понял тебя. мне нужно найти сумму проданного каждым продавцом и взять максимальное значение одним запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:48 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
кол-во продавцов примерно так. SELECT count(snum) AS Выражение1 FROM (select distinct snum from orders) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:59 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
2 vlad_707 Я написал просто через макс - соответсвенно вместо TableName может быть подзапрос с суммой продаж по продавцам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:59 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
А без подзапросов никак ??? у Грабера делается одним П.С. по Граберу до подзапросов я ещё не дошёл с подзапросами понятно.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 13:08 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Максимум могут иметь несколько продавцов. Поэтому лучше так: SELECT * FROM ( SELECT Orders.SNUM ID_ord, Sum(Orders.AMT) SUM_amt FROM Orders GROUP BY Orders.SNUM ) x WHERE SUM_amt >= ALL (SELECT Sum(Orders.AMT) FROM Orders GROUP BY Orders.SNUM) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 13:14 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
ЗЫ. Потренироваться в написании запросов можно здесь: http://sql.ipps.ru или сразу http://sql.ipps.ru/exercises.php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 14:21 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
-)) спасибо.., если б за это ещё з.п. платили-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 15:01 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Ба! Какие люди нас посетили! :) 2 Serge I - пламенный привет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 18:09 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
To VIG Так вот вы где пропадаете. А я все жду писем.:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 18:21 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Ну "пропадаете" это громко сказано, так , заглядываю иногда на огонек :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 19:50 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
продолжаю изучение Мартина Грабера. появился новый вопрос: Тема СВЯЗАННЫЕ ПОДЗАПРОСЫ из теории: вот способ найти всех заказчиков в Заказах на 3-е октября : SELECT * FROM Customers outer WHERE 10/03/1990 IN (SELECT odate FROM Orders inner WHERE outer.cnum = inner.cnum); Я проверяю... запрос пишет ошибки на алиасах...-(.... хм... меняю имена алиасов на "a" , "b" запрос выводится пустым.... хотя должен выводить 4 записи Вопрос чё не так в аксессе ????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 11:38 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
inner - зарезервированное слово!!! 10/03/1990 - это не дата - это 10 деленное на 3 и деленное на 1990 А дата пишется так: #10/03/1990# И не всех на 3 октября, а всех на 3 октября 1990 года ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 11:47 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
хм..... в книге указано, как я писал исходно... ранее пробовал такой запрос,тоже думал,что не понимает как дату... SELECT * FROM Customers AS a WHERE #10/03/1990# IN (SELECT odate FROM Orders b WHERE a.cnum = b.cnum); выводит пустые строки.... такой запрос соответственно работает SELECT DISTINCT Customers.*, Orders.ODATE FROM Customers INNER JOIN Orders ON Customers.CNUM = Orders.CNUM WHERE (((Orders.ODATE)=#3/10/1990#)); Что не так во связанном ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:11 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
#10/03/1990# - 3 октября (3 октября Гендальф дрался с назгулами на Заверети :) ) #03/10/1990# - 10 марта что-то не так с данными, может их вбили не совсем корректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:18 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
тогда я что то не понимаю.... данные таблицы ODATE 10.03.1990 10.04.1990 10.03.1990 10.04.1990 10.06.1990 10.05.1990 10.06.1990 10.03.1990 10.03.1990 10.03.1990 переправил запрос на SELECT * FROM Customers AS a WHERE #03/10/1990# IN (SELECT odate FROM Orders b WHERE a.cnum = b.cnum); хм... и он заработал...... причём, когда в конструкторе запросов на условие пишешь 10.03.1990 в SQL строке аксесс записывает #03/10/1990#.... и выдаёт нужный результат..... это что, подстава?????????????????????????????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:44 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
авторпричём, когда в конструкторе запросов на условие пишешь 10.03.1990 в SQL строке аксесс записывает #03/10/1990#.... и выдаёт нужный результат..... это что, подстава?????????????????????????????????? нет - это так и есть 10.03.1990 - это 10 марта 1990 года (в русском представлении даты) 03/10/1990 - то же число только по американски Мы пишем дату в формате dd.mm.yyyy, а америкосы mm/dd/yyyy А акс как известно америкосами писан :) В конструкторе вы дату пишете в вашей локали, а система ее сама приводит к типу понятному Аксу, а ему как раз понятен американский формат даты Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:49 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
автор в другом топике писал:Господа модераторы. Может мой топик "запрос-найти максимального из группы" переименовать в "Грабли Мартина в аксессе". я туда скидываю все вопросы,которые не получаются выполнить в аксессе по этой книге. Мартин Грабер "Введение в SQL". Переименовываю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 12:55 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
2 paparone Не америкосы , а американцы. (Тут ,слава богу ,не ПТ а профессиональный форум). А в остальном все правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 14:37 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
2 VIG Ок - учту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 15:59 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Такого примера я не нашёл в Грабере (может я пока слеп) есть таблица T a__b__c 1__1__0 1__2__0 2__3__0 2__4__0 3__5__0 нужно найти сумму b по групперовке а и записать её в каждой записи поля с для соответствующих а....????????????????????? какие будут предложения. П.С. есть рабочий вариант для sql сервера, но в аксессе он не работает (т.е должен получиться столбец с с 3 3 7 7 5 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 17:27 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Что-то подобное несколько раз пробегало Есть такое в Аксе - он не может упдейтить таблицу т.к. запрос делается из самой таблицы с группировкой () Выход - заносить результат во временную таблицу и только потом Update поля c ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 17:33 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
на SQL сервере сделали такой запрос и он работает UPDATE t1 SET c = (SELECT SUM(t2.b) FROM t AS t2 WHERE t1.a = t2.a GROUP BY t2.a) FROM t AS t1 Грабер пишет такое: Сам подзапрос не должен использовать предложения GROUP BY или HAVING. Делаю так: (что не работает- пишет,что запрос должен быть обновлённым) делаю первый сохран запрос z1 SELECT t.a, Sum(t.b) AS sb FROM t GROUP BY t.a; и конечный запрос UPDATE t SET c = (SELECT z1.sb FROM z1 WHERE z1.a = t.a); Что тут нужно ещё подшаманить?? и как бы всётаки записать одним запросом или как-нибудь вообще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 17:58 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Попробуй в свойствах обоих запросов поставить Тип набора записей = Динамический набор (несогл.) Но это точно шаманство Если получиться напиши как - мне тоже интерестно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:05 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
в приципе суть в том чтобы из подчиненного запроса перекинуть в from главного запроса и чтоб остался inner join ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:06 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
не проверял синтаксис что то вроде UPDATE t SET c = z1.sb FROM t inner join z1 on z1.a = t.a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:09 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
2 АлексейК Это точно Акс, а не MSSQL? Что-то сомнения берут :( И что-то мне подсказывает, что все равно получим сообщение, запрос должен быть обновляем :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:11 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
хм... АлексейК идею понял, но пишет, что пропущен оператор в FROM........................... paparome- извени ,но как это сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:15 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
В конструкторе запроса правой кнопкой мыши --> свойства ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:17 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
paparome хм... а в свойствах запроса на изменение нет такого свойства Тип набора записей ............................ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:24 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Тогда меняй только там, где есть :) Повторюсь - это шаманство - и вряд ли поможет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:26 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
это не помогло..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:35 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Неужели в АКСЕСС эта задача не решаема ?????????????????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:43 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Решаема, но через временную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 09:57 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
ну я же пробовал через сохранёный запрос ...не помогло пробовал таким образом 1) SELECT t.a, Sum(t.b) AS sb INTO z1t FROM t GROUP BY t.a; UPDATE t SET c = (SELECT z1t.sb FROM z1t WHERE z1t.a = t.a); это тоже не помогло- Пишет ,что в операции должен использоваться обновлённый запрос... попутно,2) как в аксессе сделать CREATE VIEW (или как програмно сохранить запрос) и3) как сделать временную таблицу (или что есть временная таблица в аксессе??) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 10:23 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
UPDATE t INNER JOIN z1t On t.a = z1t.a SET t.c = z1t.sb; ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 10:30 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Благодарю! Наконец-то заработало.... Работающий в аксессе вариант: --------------------------------- SELECT t.a, Sum(t.b) AS sb INTO z1t FROM t GROUP BY t.a; UPDATE t INNER JOIN z1t On t.a = z1t.a SET t.c = z1t.sb; ---------------------------------- А можно мне в двух словах объяснить - чем сохранёный запрос отличается от врем таблицы?? (почему с табл запрос обновляемый, а с сохран запросом- нет..??) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 10:41 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Потому-что при обращении к запросу он каждый раз вычисляется + идет группировка, т.е. такой запрос не является обновляемым А после того как вы занесли данные в таблицу можете с ней делать все что-хотите :) (добавить/удалить/изменить записи - они уже не привязаны к таблице-источнику) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:23 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
В догонку Чтобы не менять местами день и месяц в датах при использовании SQL, в Access можно использовать функцию CDate: Where CDate('10/03/1999') IN ... Эта функция преобразовывает строковое представление даты к типу дата с учетом региональных настроек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 13:18 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
2 Serge I: Соответственно, при разных региональных настройках она будет работать по-разному. Это будет большой подводный камень в программе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 13:35 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч Согласен, но в большинстве случаев мы пишем программы для внутреннего употребления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:02 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Внутреннее - это внутри России? :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:04 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Я бы сказал в гомогенной области с одинаковыми региональными настройками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:15 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Но если человек по какой-нибудь причине поменяет себе настройки (например, чтобы распечатать что-нибудь в другом формате), то сразу перестанут работать все программы, которые зависят от настроек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:19 |
|
||
|
Грабли Мартина в аксессе (запрос-найти максимального из группы)
|
|||
|---|---|---|---|
|
#18+
Я же согласился с вами. Просто хочу заметить, что мне часто приходится менять разделитель в дате, но никогда я не менял местами день и месяц (разве что в SQL :-)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 14:24 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1674519]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
188ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 512ms |

| 0 / 0 |
