0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 250
1

Последнее из последнего

24.02.2015, 22:08. Показов 750. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Нужна ваша помощь. Передо мною несложная задача: мне нужно вывести наименования товаров, которые проданы самой последней датой. Допустим, у меня есть дата продажи и наименование товара. Что я делаю: запрос на выборку - групповые операции - Last и для поля наименования, и для поля дата. Выводит только одну строку, то есть одну модель. Это всё, конечно, хорошо, но что мне делать когда таких товаров(самым последним числом) несколько? Как преобразовать запрос, чтобы он выдавал все товары последней даты?
надеюсь на вашу помощь,спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2015, 22:08
Ответы с готовыми решениями:

Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа...

Односвязный список. Вывести сумму последнего элемента и первого, предпоследнего и последнего и т.д.
Считываю с клавиатуры числа пока не встречаю 0. Например 1 3 7 5 8 1 0 Вывожу суму последнего...

Как в Командной строке получить дату последнего изменения файла или последнего доступа к нему?
суть такова, у меня есть список фаилов с полным адресом типо C:\sad\asds\dich.obj. требуется...

Инвертировать часть массива с последнего минимального до последнего элемента массива
Инвертировать часть массива с последнего минимального до последнего элемента массива.

14
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
24.02.2015, 22:30 2
Примерно так, Имена полей/таблиц исправьте на свои
SQL
1
2
3
SELECT Наименование
FROM Таблица
WHERE [Дата продажи] IN (SELECT MAX([Дата продажи]) FROM Таблица)
0
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 250
24.02.2015, 22:36  [ТС] 3
спасибо, но что-то точно пошло не так..
Миниатюры
Последнее из последнего  
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
24.02.2015, 22:40 4
Товары могут повторяться. Надо дистинкт добавить
SQL
1
2
3
SELECT DISTINCT Наименование
FROM Таблица
WHERE [Дата продажи] IN (SELECT MAX([Дата продажи]) FROM Таблица)
Добавлено через 2 минуты
Цитата Сообщение от Olyaa Посмотреть сообщение
что-то точно пошло не так..
По-моему в каком-то топике Вам уже говорили, что поля с пробелами должны быть в прямых скобках
SQL
1
2
3
SELECT [Серийный номер]
FROM Таблица
WHERE [Дата заказа] IN (SELECT MAX([Дата заказа]) FROM Заказ)
0
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 250
24.02.2015, 22:49  [ТС] 5
на самом деле, там было что-то другое, но тоже про пробелы. там было просто про названия полей. перед названиями стояли пробелы из-за странного импорта.
0
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 250
24.02.2015, 22:55  [ТС] 6
не подскажите, почему запрашивает параметр?
Миниатюры
Последнее из последнего  
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
24.02.2015, 23:03 7
Ох, Вы и путаник... Так у Вас 2 таблицы! А не одна, как было написано в первом сообщении.
SQL
1
2
3
4
SELECT [Серийный номер]
FROM Товар
WHERE [Серийный номер] IN 
(SELECT [Серийный номер] FROM заказ WHERE [Дата заказа] = (SELECT MAX([Дата заказа]) FROM заказ))
А сообщение выдает потому что в таблице Товар скорее всего просто нет поля даты заказа
1
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 250
25.02.2015, 01:47  [ТС] 8
ну я же нигде и не писала, что у меня одна таблица
0
1390 / 325 / 45
Регистрация: 16.04.2013
Сообщений: 775
Записей в блоге: 2
25.02.2015, 02:14 9
Olyaa,
Вот для этого и надо,
Чтобы не было путаницы,
Выкладывать свой пример.
1
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 250
25.02.2015, 09:34  [ТС] 10
да, спасибо, получилось.
я скопировала Ваш код и вставила его с целью понять, как же это мне сделать в следующий раз. но в конструкторе просто написало в условии отбора:
In (SELECT [Серийный номер] FROM заказ WHERE [Дата заказа] = (SELECT MAX([Дата заказа]) FROM заказ))
возможно ли это же самое проделать, но без написания кода?
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
25.02.2015, 10:52 11
Цитата Сообщение от Olyaa Посмотреть сообщение
возможно ли это же самое проделать, но без написания кода?
Напишите в скл-редакторе вот такой код
SQL
1
2
3
SELECT DISTINCT [Серийный номер]
FROM Товар INNER JOIN заказ ON Товар.[Серийный номер]=заказ.[Серийный номер]
WHERE заказ.[Дата заказа]=dmax("[Дата заказа]", "заказ")
Перейдите в режим конструктора и увидите вариант без дополнительного кода. Со всеми таблицами и полями. Предикат DISTINCT равнозначен свойству "Уникальные значения=Да" в окне свойств запроса
0
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 250
25.02.2015, 11:36  [ТС] 12
да, понятно.
я ведь правильно поняла... dmax отличается от просто функции max тем, что первая выводит не одно максимальное значение?
Скажите, а почему у меня не получается кроме серийного номера выводить ещё и название модели(это всё в одной таблице)? это же вроде всё связано..
запрос 1
Вложения
Тип файла: rar налоги1.rar (28.0 Кб, 6 просмотров)
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
25.02.2015, 11:50 13
Все поля, перечисленные в селекте, должны быть либо сгруппированны, либо под агрегатными функциями. Серийный номер в запрос1, в группировку не был включен
SQL
1
2
3
4
SELECT  Товар.[Серийный номер], Товар.Модель
FROM Товар INNER JOIN заказ ON Товар.[Серийный номер] = заказ.[Серийный номер]
WHERE (((заказ.[Дата заказа])=DMax("[Дата заказа]","заказ")))
GROUP BY Товар.[Серийный номер], Товар.Модель;
0
0 / 0 / 0
Регистрация: 12.07.2013
Сообщений: 250
25.02.2015, 11:54  [ТС] 14
спасибо, теперь ясно..а
Цитата Сообщение от Olyaa Посмотреть сообщение
я ведь правильно поняла... dmax отличается от просто функции max тем, что первая выводит не одно максимальное значение, а несколько?
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
25.02.2015, 12:02 15
Нет, неправильно. DMax это функция библиотеки Access. А MAX агрегатная функция Jet SQL - ядра база данных. Но функционал у них одинаков. И та функция, и другая выводят некотрое максимальное значение. А максимум он и в африке максимум, он один. Это же Максимум!

Другое дело, что при различных группировках, можно найти несколько максимумов - каждый для своей группы. В sql это делается группировками, а в функции придется задавать параметры. Но в любом случае отдаваемое значение одно для каждой группы.
1
25.02.2015, 12:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2015, 12:02
Помогаю со студенческими работами здесь

последнее в W7
В общем такой вопрос: как убрать последние просмотренные файлы в W7? ну допустим открываю много...

Последнее слово
требуется найти последнее слово в строке. Например poslednee slovo v stroke stroke...

Последнее обращение к БД
День добрый Подскажите пожалуйста как можно получить время и дату, а также имя пользователя...

Последнее обновление
Я тут где то вычитал что после последнего обновления у многих экран смерти выскакивает на компе.......


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru