![]() |
|
![]() ![]() ![]() |
|
jon007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Здравствуйте. Есть таблица в access с полями data, time, tovar, kolvo, в ней значение в поле tovar могут повторятся. Не получается сделать запрос так чтобы было выбраны все записи таблицы, исключая одинаковые значения в поле товар, но при этом была возможность выбора даты и времени в запросе и максимальное значение поля kolvo. Спасибо.
Типа записи таблицы: data time tovar kolvo 04.04.2016 23:08:49 пластырь 12 05.04.2016 23:10:15 пластырь 13 06.04.2016 22:10:16 спички 1 06.04.2016 23:10:17 пластырь 14 06.04.2016 22:40:11 спички 2 06.04.2016 23:40:12 пластырь 15 06.04.2016 22:40:13 спички 3 06.04.2016 22:40:14 спички 4 А на выходе получить только: 06.04.2016 23:10:18 пластырь 15 06.04.2016 22:40:14 спички 4 Это сообщение отредактировал(а) jon007 - 7.4.2016, 13:28 |
|||
|
||||
homef1re |
|
|||
Unregistered |
http://www.tbania.ru/
лучшие банные процедуры со всего мира,Дубовая фитобочка, Японская баня офуро,Турецкая баня хамам,Русская баня в комплексе «Таёжные бани» Московские бани – всегда легкий пар!Элитный комплекс отдыха «ТАЁЖНЫЕ БАНИ» баня на дровах с печкой на березовых поленьях. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
DizzyCrazy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 28.11.2012 Репутация: нет Всего: нет |
select table1.data,table1.time,t.tovar,maxkolvo as kolvo from
( --Отобрали max значения для названий во временную t select tovar,max(kolvo) as maxkolvo from Table1 group by tovar ) t --связали t с Table1 по названию и max количеству inner join Table1 on t.tovar = table1.tovar and maxkolvo = kolvo Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
jon007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
DizzyCrazy, делфи ругается при запуске запроса, пишет "ошибка синтаксиса в операции JOIN".
Не пойму почему не работает такой запрос:
|
|||
|
||||
salik |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 28.1.2011 Репутация: нет Всего: 1 |
|
||||
|
|||||
jon007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Опять ругается "Попытка выполнить запрос, который не включает указанное выражение 'time' как часть статистической функции или группы". На компе стоит делфи 7 и access 2002.
Это сообщение отредактировал(а) jon007 - 8.4.2016, 11:32 |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
Может проблема в названиях полей таблицы?
date, time скорее всего функции такие есть |
|||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 828 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
-------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
jon007 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Такой запрос работает на половину, выводит поле tovar и не выводит поле kolvo. Похожие запросы я уже все перепробовал. Добавлено через 2 минуты и 42 секунды
Изначально в базе поле data, а не date, как пишут в запросах, даже исключая поле time запросы не хотят правильно работать. |
||||||
|
|||||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 828 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Значит я в поставленной задаче что-то не понимаю. Если в моем запросе выкинуть условия, то выведутся все товары с максимальным количеством, а потом уже условиями выбираем по дате и времени. Группировка как раз исключит одинаковые товары. Добавлено @ 10:59 Если еще ограничить макисмум каким-то числом, то добавьте в WHERE kolvo<:my_kolvo Это сообщение отредактировал(а) Vas - 9.4.2016, 11:24 Присоединённый файл ( Кол-во скачиваний: 11 ) ![]() -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
jon007 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Вот выполнение Вашего запроса с выборкой по дате, выборку по времени убираем пока:
![]() ![]() А вот запрос без группировки.
![]() А как сделать что бы такой запрос с группировкой выдавал не только поле товар, но и максимальное число поля количество? Я уже склоняюсь к мысли что бы вернуть программу к начальному шагу, где была таблица, в которую записыватся название товара и его количество в момент скана. В таком случаи такого запроса вполне хватает.
![]() И сделать ещё одну таблицу где будет фиксироваться время и дата скана штрихкода, ну и уже по ней делать нужные выборки по датам и времени. Это сообщение отредактировал(а) jon007 - 9.4.2016, 13:19 |
||||
|
|||||
Vas |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 828 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Этот запрос пишите вы у себя в программе. А вот такой пишу я в сообщении
Я думаю разницу вы видите. И в сообщении моем выше приложен файл с результатами на моей машине Приложу еще раз Присоединённый файл ( Кол-во скачиваний: 1 ) ![]() -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
||||
|
|||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 828 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
max(kolvo) в запросе не забывайте писать, не в условии, а в результате. А если на дату у вас нет товара, то он показываться и не должен, не вижу проблем. Если на раньшую дату надо выбрать, пишите data <: my_data
Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
jon007 |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Вот запрос:
![]() Исправляем название таблицы:
![]() Исправляем поле date на data так как она в таблице стоит и получаем пустой ответ на запрос, хотя данные на этот день и число в таблице есть, скрины запросов на эту же дату в предыдущем посте:
Попытка выполнить такой запрос:
![]() Я не пойму почему так происходит. Содержимое таблицы prodazha: data time tovar kolvo 06.04.2016 22:59:41 пластырь 1 06.04.2016 22:59:43 пластырь 2 06.04.2016 23:00:16 пластырь 3 06.04.2016 23:00:53 пластырь 4 06.04.2016 23:01:08 пластырь 5 06.04.2016 23:08:24 пластырь 6 06.04.2016 23:08:27 пластырь 7 06.04.2016 23:08:28 пластырь 8 06.04.2016 23:08:30 пластырь 9 06.04.2016 23:08:44 пластырь 10 06.04.2016 23:08:46 пластырь 11 06.04.2016 23:08:49 пластырь 12 06.04.2016 23:10:15 пластырь 13 06.04.2016 23:10:17 пластырь 14 06.04.2016 23:10:18 пластырь 15 06.04.2016 22:35:06 спички 1 06.04.2016 22:40:11 спички 2 06.04.2016 22:40:13 спички 3 06.04.2016 22:40:14 спички 4 06.04.2016 22:40:15 спички 5 06.04.2016 22:40:16 спички 6 06.04.2016 22:40:17 спички 7 06.04.2016 22:40:18 спички 8 06.04.2016 22:40:19 спички 9 06.04.2016 22:42:39 спички 10 09.04.2016 14:32:07 спички 1 09.04.2016 14:34:08 спички 2 09.04.2016 14:34:11 спички 3 09.04.2016 14:34:12 спички 4 09.04.2016 14:34:13 спички 5 Это сообщение отредактировал(а) jon007 - 9.4.2016, 14:55 |
||||||||
|
|||||||||
Vas |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 828 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Нельзя использовать агрегатные функции без группировки с другими полями
Перепиши вот так
Дык для ADO сначала распарсить параметры в запросе надо, что-то из разряда ADOQuery.ParseParam (проверять по справке надо), а потом передавать им параметры, или на крайняк создавать самому их и тип их. Ну и собсно читать Использование агрегатных функций в SQL обязательно. Добавлено через 7 минут и 50 секунд P.S. Я три раза скрин свой прикрепил, там же явно видно запрос без параметров и с group by почему нельзя для начала тупо переписать запрос и выполнить? Как же раньше учились по книжкам программировать без интернета, вот время было, одна книга + справка и все, а деваться то некуда. Дж. Грофф, П. Вайнберг Энциклопедия SQL 3-е издание, может быть уже есть 4-е не знаю. Но почитать не помешало бы, там даже раздел есть запросы с группировкой ![]() -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |