powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с запросом
22 сообщений из 22, страница 1 из 1
Помогите с запросом
    #32986052
Есть таблица: t
NNUM (наименование), PRICE (цена), DATA (дата изменения цены)

Нужно выбрать для каждого наименования только последнюю измененную цену и дату...
Если использовать max(data) то нужна группировка по полю PRICE - получается не то, что надо...
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986119
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select a.* from t a where exists (select max(b.DATA) from t b where b.NNUM=a.NNUM group by b.NNUM)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986158
Я что-то подобное пробовал,
так он ругается на max(b.DATA) в подзапросе
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986173
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max([b.DATA])
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986189
и это не помогает... =)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986197
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши как ругается.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986200
select * from t group by NNUM having data = max(data)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986230
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про select a.* from t a where exists (select max(b.DATA) from t b where b.NNUM=a.NNUM group by b.NNUM) забудь.
select a.* from t a where a.Data in (select max(b.DATA) from t b where group by b.NNUM)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986233
ругается : subquery is invalid
если убрать аггретатную функцию то все проходит, но соответственно результат не тот!

Дмитрий: Having clause is invalid - этот вариант я тоже пробовал
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986248
тока что проверил у себя - работает без проблем
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986249
Alexmed: в последнем варианте просто выводятся все записи таблицы!
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986267
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Геннадий ПетровичAlexmed: в последнем варианте просто выводятся все записи таблицы!
Этого не может быть. Где то ошибся. И еще, where в подзапросе я забыл убрать.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986285
Мамой клянусь - выводятся все цены... а про where я понял...
блин вроде задание не сложное, а решения никак не найти... обидно
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986297
Fox какой версии?
Таблица большая? Если не очень - кинь на мыло, посмотрю...
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986309
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И мне. Интересно.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986335
Таблицу выслал...
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986369
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Геннадий ПетровичТаблицу выслал...
Как же все записи, если в t 37085 записей, а в селекте - 36584
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986410
Ну все равно это не то, что нужно....
должно быть около 6000
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986427
Ну все равно это не то, что нужно....
должно быть около 6000
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986458
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да что то сегодня сразу и не соображается

SELECT a.* from t a WHERE a.Data in (select MAX(b.Data) Date FROM t b WHERE b.nnum=a.nnum)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32986475
Работает!
Низкий поклон!
=)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32987548
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Геннадий Петрович!

Вопрос из разряда FAQ - например описан на сайте Михаила Дроздова. Имеет несколько решений - в зависимости от версии фокса. В том числе и без корреляции подзапроса (в более старых версиях фокса работает несколько быстрее - в VFP9 оптимизатор по сути приводит их к одному плану выполнения):

SELECT * FROM t ;
WHERE STR(t.nnum) + DTOS(t.data) IN;
(SELECT STR(t.nnum) + DTOS(MAX(t.data));
FROM t ;
GROUP BY t.nnum)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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