powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтрация по
9 сообщений из 9, страница 1 из 1
Фильтрация по
    #32316370
IGI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IGI
Гость
Добрый день,
Пришел слезно просить небольшой помощи у всех, в SQL я не сильно рублю
, а мне всего лишь фильтр нужно написать,

Просто напросто есть такая таблица
nn наименование цена дата
1 Процессор A 55 01.11.03
2 Процессор A 54 02.11.03
3 Процессор A 52 03.11.03
4 Процессор B 53 02.11.03
5 Процессор B 52 01.11.03
6 Память A 23 01.11.03
7 Память A 22 01.11.03
8 Память A 25 02.11.03

Мне нужно взять из этой таблицы строки имеющие минимальную цену, соответственно повторяющиеся строки с одинаковыми наименованиями
недопустимы
т.е. должно получиться следующее

nn наименование цена дата
4 Процессор A 52 03.11.03
5 Процессор B 52 01.11.03
7 Память A 22 01.11.03

Помогите пожалуйста кто силен, очень надо

спасибо заранее! :)
...
Рейтинг: 0 / 0
Фильтрация по
    #32316441
MixaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это надо решить в Access или на сервере?!?!?
...
Рейтинг: 0 / 0
Фильтрация по
    #32316622
IGI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IGI
Гость
У меня база в Акцессе, всякие SQL запросы пробую в Акцессе, а обращение к базе делаю из Delphi через BDE
===
С запросом ковырялся так ничего и не получилось, народ подсказал следующий пример но в акцессе я его не смог запустить, все время какие то ошибки, пример сам такой

select * from [Таблица] join(
select (select top 1 [nn] from [Таблица] t where
t.[наименование]=a.[наименование] order by [цена],[дата] desc)as [nn]
from (select distinct [наименование] from [Таблица]) as a) as b on
b.[nn]=[Таблица].[nn]
order by [наименование]

тут я безсилен, не могу в этом лесу разобраться, говорят под SQL2000 должен работать, а вот под акцессом у меня не получается его приручить, :((
...
Рейтинг: 0 / 0
Фильтрация по
    #32316636
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слушай, а тебе нужны именно строки или наименование + минимальная цена? Если наименование + цена - то это простейший группировочный запрос.\r
Если же строки - то почему бы тебе не в аксесовской базе вспомогательный запрос не написать? Тогда все тоже просто.\r
Если же треба череж жопу, т.е. строго одним запросом- см. топик Такой вот пустячок. Там несколько решений такой же задачи, с извратами (мое) и без извратов (рытейла).
...
Рейтинг: 0 / 0
Фильтрация по
    #32316639
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дабы восстановить историческую справедливость - там еще сразу же решение Саныча приведено, но оно с DLookUp'ом, т.е. из дельфей работать не будет.
...
Рейтинг: 0 / 0
Фильтрация по
    #32316648
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Через жопу, но без извратов - это тоже изврат. :^)
...
Рейтинг: 0 / 0
Фильтрация по
    #32316696
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю, не знаю, насколько это изврат, но я воспользовался примером Лоха. По-моему очень даже ничего и самое главное - логично выглядит.
...
Рейтинг: 0 / 0
Фильтрация по
    #32317120
IGI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IGI
Гость
Лох Позорный, извини конечно, но я не обзываюсь а обращаюсь :)

Спасибо за запрос, воспользовался твоим примером, единственно не знаю как добавить поле с названиями типов, т.е table2.Name
где table1.t=table2.t

SELECT table1.t, table1.d, Max(table1.l) AS [Max-l]
FROM table1 INNER JOIN [SELECT table1.t, Max(table1.d) AS Max_d
FROM table1
GROUP BY table1.t
]. AS q1 ON (table1.d = q1.Max_d) AND (table1.t = q1.t)
GROUP BY table1.t, table1.d;

подскажи каким образом добавить?
...
Рейтинг: 0 / 0
Фильтрация по
    #32317195
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
SELECT First(table2.name) As First_Name, table1.t, table1.d, Max(table1.l) AS [Max-l] 
FROM table2 Inner Join (table1 INNER JOIN [SELECT table1.t, Max(table1.d) AS Max_d 
FROM table1 
GROUP BY table1.t 
]. AS q1 ON (table1.d = q1.Max_d) AND (table1.t = q1.t)) On table2.t=table1.t 
GROUP BY table1.t, table1.d; 


Не проверял, так что если что - я не виноват
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтрация по
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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