Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос последней даты / 12 сообщений из 12, страница 1 из 1
25.01.2005, 11:05
    #32881766
Strong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
есть 2 таблицы в одной журнал действий пользователя (usrlog ), в другой данные с которыми он манипулировал (Table).
есть определенная дата (tLastUseTime)
Необходимо отобрать данные из Table и usrlog с даты (tLastUseTime) по текущую.
запрос :

SELECT Table.*, usrlog.time ;
FROM Table INNER JOIN usrlog ;
ON Table.rn=usrlog.key ;
WHERE usrlog.time > tLastUseTime INTO CURSOR cur_ Table

выбирает в курсор две одинаковые записи с разным временем изменения, (time), попадающие в промежуток usrlog.time > tLastUseTime,
а нужна только запись с последним изменением.
Как этого добиться?
VFP 8.0

______________________________________
с уважением: Strong
...
Рейтинг: 0 / 0
25.01.2005, 11:35
    #32881899
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
SELECT TOP 1 ....... ORDER BY usrlog.time DESC
...
Рейтинг: 0 / 0
25.01.2005, 11:52
    #32881976
Grumax_user
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
Делаю предположение, что у каждой записи есть свой уникальный ключ Usrlog.Id_UserLog - для таблицы действий Table.RN - для таблицы манипулятора, т.к. вероятно они обе из базы, организация коей трудновата без ключей. :-))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  SELECT Usrlog.Id_UserLog, MAX(Usrlog.Time), Table.RN ;
 FROM ;
  Table INNER JOIN usrlog ON Table.rn=usrlog.key ;
 WHERE usrlog.time > tLastUseTime ORDER BY Usrlog.Id_UserLog GROUP BY Table.RN, Usrlog.Id_UserLog INTO CURSOR cur_varibal NOFILTER

*выбрали все записи удовлетворяющие условию usrlog.time > tLastUseTime и взяли МАХ дату, т.е. дату последнего изменения. 
*Далее выбираем все записи из курсора связь с UsrLog.dbf один к одному

  SELECT Table.*, usrlog.time , cur_varibal.Id_UserLog;
   FROM ;
  cur_varibal ;
  INNER JOIN usrlog ;
   ON cur_varibal.Id_UserLog=usrlog.Id_UserLog ;
  INNER JOIN Table ;
   ON usrlog.key= Table.rn ;
  INTO CURSOR cur_ Table

Я во все дела суюсь -> всесторонне разовьюсь
...
Рейтинг: 0 / 0
25.01.2005, 12:38
    #32882147
Strong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
w3dSELECT TOP 1 ....... ORDER BY usrlog.time DESC
Oшибка N 1806 SQL: Столбец 'TIME' не найден.
...
Рейтинг: 0 / 0
25.01.2005, 12:40
    #32882150
Strong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
Grumax_userДелаю предположение, что у каждой записи есть свой уникальный ключ Usrlog.Id_UserLog - для таблицы действий Table.RN - для таблицы манипулятора, т.к. вероятно они обе из базы, организация коей трудновата без ключей. :-))



уникальный ключ Usrlog.Id_UserLog - ну нету такого :-(
...
Рейтинг: 0 / 0
25.01.2005, 12:49
    #32882175
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
одним запросом может не получиться
...
Рейтинг: 0 / 0
25.01.2005, 12:56
    #32882195
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
Strong w3dSELECT TOP 1 ....... ORDER BY usrlog.time DESC
Oшибка N 1806 SQL: Столбец 'TIME' не найден.

Ну я вообще-то имел в виду, что надо отобрать 1 "верхнюю" запись с сортировкой по убыванию по полю, где дата.
Над правильным синтаксисом я не думал
...
Рейтинг: 0 / 0
25.01.2005, 13:10
    #32882224
Strong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
w3dНу я вообще-то имел в виду, что надо отобрать 1 "верхнюю" запись с сортировкой по убыванию по полю, где дата.


Это понятно, а куда я time то присобачу если в TABLE его нет
...
Рейтинг: 0 / 0
25.01.2005, 13:14
    #32882240
Запрос последней даты
такой вариант запроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT Table.*, usrlog.time ;
FROM Table INNER JOIN usrlog ;
ON Table.rn=usrlog.key ;
WHERE usrlog.time > tLastUseTime ;
GROUP by Table.m ;
HAVING usrlog.time = max(usrlog.time) ;
INTO CURSOR cur_ Table
...
Рейтинг: 0 / 0
25.01.2005, 13:32
    #32882292
Grumax_user
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
Фрагмент проги:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT FIELD_01,FIELD_02,FIELD_03,MAX(time),key FROM Usrlog WHERE usrlog.time > tLastUseTime ORDER BY key GROUP BY FIELD_01,FIELD_02,FIELD_03,key INTO CURSOR cur_user NOFILTER READWRITE
sele cur_user
SELECT Table.*, cur_user.time ;
  FROM ;
Table ;
  INNER JOIN cur_user ;
ON Table.rn=cur_user.key ;
  INTO CURSOR cur_ Table

Я во все дела суюсь -> всесторонне разовьюсь
...
Рейтинг: 0 / 0
25.01.2005, 14:00
    #32882375
Grumax_user
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
Поля FIELD_01,FIELD_02,FIELD_03 убрать, поторопился.......Сорри

Я во все дела суюсь -> всесторонне разовьюсь
...
Рейтинг: 0 / 0
25.01.2005, 15:30
    #32882653
Strong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос последней даты
Дмитрий Маликовтакой вариант запроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT Table.*, usrlog.time ;
FROM Table INNER JOIN usrlog ;
ON Table.rn=usrlog.key ;
WHERE usrlog.time > tLastUseTime ;
GROUP by Table.m ;
HAVING usrlog.time = max(usrlog.time) ;
INTO CURSOR cur_ Table

этот вариант работает

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


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