Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как правильно сгруппировать? / 10 сообщений из 10, страница 1 из 1
18.08.2003, 11:09
    #32238698
Yur
Yur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
Извините за чайнический вопрос:
Есть таблица с тремя полями: Дата прихода ТМЦ, Склад, Номер ТМЦ
Нужно получить информацию о дате последнего прихода ТМЦ на склад.
То есть нужно выбрать максимальную дату по ТМЦ и складу.
Вариант
Select Max(Data), Sklad, N_TMC
...
Group by Sklad, N_TMC;

Не подходит, поскольку на разных складах могут храниться одинаковые ТМЦ, а такая группировка одинаковые ТМЦ исключает.

Подскажите, пожалуйста, как правильно сгруппировать?
...
Рейтинг: 0 / 0
18.08.2003, 11:16
    #32238709
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
Я не знаю, что такое ТМЦ и почему такая группировка одинаковые ТМЦ исключает, но мне кажется, что в этом селекте все правильно.
...
Рейтинг: 0 / 0
18.08.2003, 11:19
    #32238714
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
Если смысл в том, чтобы узнать дату последнюю дату прихода конкретной ТМЦ на Любой склад, убрать код склада из условия в группировке?

Select Max(Data), Sklad, N_TMC
...
Group by N_TMC;
...
Рейтинг: 0 / 0
18.08.2003, 12:54
    #32238891
Yur
Yur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
ТМЦ - суть товарно-материальная ценность, то бишь нечто хранящееся на складе, имеющее ценность и свой уникальный номер (который и хранится в этой таблице). На каждом из складов ТМЦ повторяются только по дате поступления, а на разных складах могут храниться одинаковые.

Нужно выбрать последнюю дату поступления каждой ТМЦ на каждый склад.

Смысл убрать поле из группировки есть только для склада,
то есть при прочих равных написать

Group by Sklad;

, однако при этом ацесс начинает ругаться, поскольку группировка некорректна для поля N_TMC.
Вылезает:

"Попытка выполнить запрос, который не включает указанное выражение 'N_TMC' как часть статистической функции или группы."

А как сделать, чтобы он так не ругался?
...
Рейтинг: 0 / 0
18.08.2003, 12:58
    #32238901
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
Одно из двух. Либо груп бай ТМЦ, либо вообще это поле убрать. Ну, или какой-нибудь First(ТМЦ).
...
Рейтинг: 0 / 0
18.08.2003, 13:01
    #32238906
Yur
Yur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
А что есть first() (извините, не знаю где мануал посмотреть)
...
Рейтинг: 0 / 0
18.08.2003, 13:08
    #32238922
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
Если есть группа записей, в которой некоторое поле через всю группу имеет одинаковое значение (т.е. группировка сделана по этому полю), то спрашивается: а для остальных полей какое значение показывать? Пример:

A B
1 2
1 8
1 9
4 2
4 3
4 4
4 5

Если сделать group by A, то будет нечто такое:

A B
1 ?
4 ?

Все эти First, Last, Max, Sum и т.д. предназначены для того, чтобы поставить что-то на место вопросительного знака, т.е. как-то получить значение на основании тех данных, которые есть в группе. Например:

Если поставить Min:
A B
1 2
4 2

Если поставить Max:
A B
1 9
4 5

Если поставить Sum:
A B
1 19
4 14

First и Last использовать не рекомендуется, если у исходного запроса не задана сортировка.

Выбор зависит от логики задачи.
...
Рейтинг: 0 / 0
18.08.2003, 13:13
    #32238932
Yur
Yur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
Уважаемый, Владимир Саныч (и остальные товариши)!

Ишак я паршивый, смиренно прошу вашего прощения, поскольку мой же собственный запрос (первоначальный вариант) действительно все правильно выбирает!

Глубокий экскъюз за украденное время
...
Рейтинг: 0 / 0
18.08.2003, 13:19
    #32238943
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
Yur
Врешь, работает вот это,
SELECT Prihod.Склад, Max(Prihod.Дата) AS Max_Дата
FROM Prihod
GROUP BY Prihod.Склад;
а с кодом ТМЦ не работает
...
Рейтинг: 0 / 0
18.08.2003, 13:23
    #32238947
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сгруппировать?
Блин, все верно :SELECT Prihod.Склад, Max(Prihod.Дата) AS Max_Дата, Prihod.ТМЦ
FROM Prihod
GROUP BY Prihod.Склад, Prihod.ТМЦ;
сам я ишак, что повелся на такое :-)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как правильно сгруппировать? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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