powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / select c последней датой
7 сообщений из 7, страница 1 из 1
select c последней датой
    #36613579
AkIg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые гуру, зациклился на select
Из следующего курсора нужно выбрать записи с max(последней) датой DatInit .
-------------------------------------
|ID|DatInit|Km|Idjour| kizg| naimnd|...
------------------------------------
|01|01.01.10|111|11|1|ГОСТ|....
|02|01.01.09|111|11|1|ГОСТ|....
|03|15.01.09|111|11|1|ГОСТ|....
|04|01.01.10|222|22|2|ТУ|....
|05|02.02.09|222|22|2|ТУ|....
|06|01.01.10|33|30|1|ГОСТ|....
|07|01.01.10|111|29|1|ГОСТ|....

Primary Key=ID
Unique Key= DatInit+Km+Idjour+ kizg+ naimnd...
В результирующем курсоре должны попасть записи с ID=01, 04, 06, 07 т.е. с максимальной датой внутри ключа DatInit+Km+Idjour+ kizg+ naimnd
Спасибо большое за любые слова
...
Рейтинг: 0 / 0
select c последней датой
    #36613751
A432
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
 SELECT * FROM TвойТейбл WHERE DatInit = ( select MAX(DatInit) FROM TвойТейбл )
...
Рейтинг: 0 / 0
select c последней датой
    #36614448
AkIg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A432, спасибо, НО.......
Если б все было так просто :-)
Данный запрос вернет записи или запись с последней датой для всей таблицы, а нужно чтобы запрос вернул по каждому индексу (ключу) запись с последней датой, что-то вроде типа этого
(пример не совсем корректен т.к. он возвращает записи с одинаковым ключом KM+KIZG+NAIMND , но разными датами):
SELECT tb1.* FROM tb1, tb2 ;
WHERE tb1.ID_Jour = tb2.ID_Jour ;
.AND. tb1.KM = tb2.KM ;
.AND. tb1.KIZG = tb2.KIZG ;
.AND. tb1.NAIMND = tb2.NAIMND ;
.AND. tb1.DatInit <> tb2.DatInit ;
INTO CURSOR asd READWRITE
...
Рейтинг: 0 / 0
select c последней датой
    #36614482
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select <Поле1>,
<Поле2>,
.......,
<Поле-n>,
max(дата)
from твоя_таблица
group by <Поле1>,
<Поле2>,
.......,
<Поле-n>
...
Рейтинг: 0 / 0
select c последней датой
    #36614555
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkIgУважаемые гуру, зациклился на select
Из следующего курсора нужно выбрать записи с max(последней) датой DatInit .
-------------------------------------
|ID|DatInit|Km|Idjour| kizg| naimnd|...
------------------------------------
|01|01.01.10|111|11|1|ГОСТ|....
|02|01.01.09|111|11|1|ГОСТ|....
|03|15.01.09|111|11|1|ГОСТ|....
|04|01.01.10|222|22|2|ТУ|....
|05|02.02.09|222|22|2|ТУ|....
|06|01.01.10|33|30|1|ГОСТ|....
|07|01.01.10|111|29|1|ГОСТ|....

Primary Key=ID
Unique Key= DatInit+Km+Idjour+ kizg+ naimnd...
В результирующем курсоре должны попасть записи с ID=01, 04, 06, 07 т.е. с максимальной датой внутри ключа DatInit+Km+Idjour+ kizg+ naimnd
Спасибо большое за любые слова
Это несложно решить с помошью корреляционного подзапроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE CURSOR TestData (ID CHAR( 2 ), DatInit Data, Km INT, Idjour INT, kizg INT, naimnd CHAR( 10 ))
INSERT INTO TestData VALUES ('01', {^ 2010 . 01 . 01 },  111 ,  11 ,  1 , 'ГОСТ')
INSERT INTO TestData VALUES ('02', {^ 2009 . 01 . 01 },  111 ,  11 ,  1 , 'ГОСТ')
INSERT INTO TestData VALUES ('03', {^ 2009 . 01 . 15 },  111 ,  11 ,  1 , 'ГОСТ')
INSERT INTO TestData VALUES ('04', {^ 2010 . 01 . 01 },  222 ,  22 ,  2 , 'ТУ')
INSERT INTO TestData VALUES ('05', {^ 2009 . 02 . 02 },  222 ,  22 ,  2 , 'ТУ')
INSERT INTO TestData VALUES ('06', {^ 2010 . 01 . 01 },  33 ,  30 ,  1 , 'ГОСТ')
INSERT INTO TestData VALUES ('07', {^ 2010 . 01 . 01 },  111 ,  29 ,  1 , 'ГОСТ')
SELECT t.* FROM TestData t WHERE DatInit = ;
(select MAX(g.DatInit) FROM TestData g  WHERE g.Km = t.Km ;
	AND g.Idjour = t.Idjour AND g.kizg = t.kizg AND g.naimnd = t.naimnd)
С уважением, Алексей
...
Рейтинг: 0 / 0
select c последней датой
    #36614606
AkIg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-K,

Спасибо большое. То что нужно.
...
Рейтинг: 0 / 0
select c последней датой
    #36615419
Banditos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkIg,

А сгруппировать данные по ключу и выбрать интересующее в группе?
SQL с кучей INSERT - хм, вы себя не жалеете совсем...

A432 правильно ответил.
Только я бы еще добавил что-то вроде:

SELECT ID, MAX(DatInit) AS DatInit, Km, Idjour, kizg, naimnd FROM ТвойТейбл ;
GROUP BY DatInit, Km, Idjour, kizg, naimnd
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / select c последней датой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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