Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Опять Select неполучается - помогите / 10 сообщений из 10, страница 1 из 1
13.04.2006, 16:27
    #33665077
S866
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
Здравствуйте господа!
не могу составить Select.
есть табличка:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
name	id	sd1		sd2		intper
qqq	15	0		-4982,86		24075
aaa	21	75326,12		75326,12		24061
aaa	21	75326,12		0		24062
aaa	21	75326,12		75326,12		24063
aaa	21	75326,12		75326,12		24064
aaa	21	75326,12		75326,12		24065
aaa	21	75326,12		75326,12		24066
aaa	21	75326,12		75326,12		24067
aaa	21	75326,12		75326,12		24068
aaa	21	75326,12		75326,12		24069
aaa	21	75326,12		75326,12		24070
aaa	21	75326,12		75326,12		24071
aaa	21	75326,12		75326,12		24072
aaa	21	75326,12		75326,12		24073
aaa	21	75326,12		0		24074
bbb	27	0		-87089,18	 24062
bbb	27	-87089,18	-87089,18	 24063
bbb	27	-87089,18	0		24064
ccc	29	0		225000		24064
ccc	29	225000		225000		24065
ccc	29	225000		256200		24066
ccc	29	256200		-150150		24067
ccc	29	-150150		-150150		24068
ccc	29	-150150		0		24069
ccc	29	0		8224,6		24070
ccc	29	8224,6		0		24071
ddd	33	0		-468863,04	24063
ddd	33	-468863,04	499267,75	24064
ddd	33	499267,75	-2302299,46	24065
ddd	33	-2302299,46	-1752299,46	24066
ddd	33	-1752299,46	-1252299,46	24067
ddd	33	-1252299,46	-173297,34	24068
ddd	33	-173297,34	1826702,66	24069
ddd	33	1826702,66	266551,88	24070
ddd	33	266551,88	-2574716,25	24071
ddd	33	-2574716,25	-3540577,27	24072
ddd	33	-3540577,27	-3040577,27	24073
ddd	33	-3040577,27	-3040577,27	24074
ddd	33	-3040577,27	-752309,73	24075
где Name - имя организации id - ее уникальный номер, Sd1 - сальдо на начало расчетного периода, sd2 - сальдо на конец расчетного периода intper - количество месяцев от рождества Христова (12*год+месяц) - номер периода
необходимо выбрать все организации с сальдом SD1 стоящим в строке с минимальным intper для данной организации.
т.е. должно получиться такое

Код: plaintext
1.
2.
3.
4.
5.
name	id	sd1		sd2		intper
qqq	15	0		-4982,86		24075
aaa	21	75326,12		75326,12		24061
bbb	27	0		-87089,18	24062
ccc	29	0		225000		24064
ddd	33	0		-468863,04	24063
Помогите нарисовать Select из этой таблицы - что то у меня неполучается.
Заранее спасибо !
...
Рейтинг: 0 / 0
13.04.2006, 16:51
    #33665184
Сергей А.М.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
Код: plaintext
select a.name,a.sd1,a.sd2,a.intper from <<table>> a inner join (select id,min(intper) as intper from <<table>> group by id) b on a.id=b.id and a.intper=b.intper
...
Рейтинг: 0 / 0
14.04.2006, 08:14
    #33666088
S866
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
Спасибо! буду пробовать
...
Рейтинг: 0 / 0
14.04.2006, 09:10
    #33666159
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
Если для каждой организации есть только одна запись для одного и того же intper и ваша версия VFP поддерживает корреляционны подзапросы, то можно и так:

Код: plaintext
1.
2.
3.
4.
select t.name, t.id, t.sd1, t.sd2, t.intper
from table t 
where t.intper = (select min(o.intper) from table o where t.id = o.id)
order by t.id
С уважением, Алексей
...
Рейтинг: 0 / 0
14.04.2006, 15:30
    #33667614
S866
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
Спасибо Aleksey-K - VFP 9 ка - думаю с Вашей помощью все у меня получится
...
Рейтинг: 0 / 0
14.04.2006, 16:17
    #33667819
S866
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
Результат:
Есть курсор O601per
сделал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
USE DBF("o601per") AGAIN IN  0  ALIAS o601perdubl

&& На начало периода выборки
select *;
from o601per ;
where o601per.intper = (select min(o601perdubl.intper) from o601perdubl where o601per.id = o601perdubl.id);
order by o601per.id into cursor nachper 

&& на конец периода выборки
select *;
from o601per ;
where o601per.intper = (select max(o601perdubl.intper) from o601perdubl where o601per.id = o601perdubl.id);
order by o601per.id into cursor konper
Всем спасибо за помощь!!!
...
Рейтинг: 0 / 0
14.04.2006, 17:21
    #33668036
Сергей А.М.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
Наверно, можно упростить
Код: plaintext
1.
2.
3.
4.
&& На начало периода выборки
&& на конец периода выборки
select * from o601per A ;
where intper = (select max(intper) from o601per where id = A.id);
order by id into cursor konper
...
Рейтинг: 0 / 0
17.04.2006, 13:40
    #33670970
S866
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
2 Сергей А.М.
Код: plaintext
1.
2.
3.
4.
5.
Наверно, можно упростить
&& На начало периода выборки
&& на конец периода выборки
select * from o601per A ;
where intper = (select max(intper) from o601per where id = A.id);
order by id into cursor konper


Спасибо тоже работает правильно .
Если не трудно просветите а что такое A - и как это работат.
Вроде бы таблица одна откуда А берется. В хелпе вроде нет ничего про такое объявление нового курсора?
...
Рейтинг: 0 / 0
17.04.2006, 13:59
    #33671035
Сергей А.М.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
S8662 Сергей А.М.
Код: plaintext
1.
2.
3.
4.
Наверно, можно упростить
&& на конец периода выборки
select * from o601per A ;
where intper = (select max(intper) from o601per where id = A.id);
order by id into cursor konper


Спасибо тоже работает правильно .
Если не трудно просветите а что такое A - и как это работат.
Вроде бы таблица одна откуда А берется. В хелпе вроде нет ничего про такое объявление нового курсора?
В конструкции
Код: plaintext
"... FROM o601per A ..."
'A' является алиасом таблицы o601per, область действия которого данный SQL-запрос и его подзапросы. Также возможно
Код: plaintext
"... FROM o601per A, o601per A2  ..."
и т.д.
Кстати, при таком использовании фокс неявно выполнит
Код: plaintext
USE o601per IN 0 ALIAS o601per
, поэтому даже после закрытия курсора konper, таблица o601per будет открыта.
...
Рейтинг: 0 / 0
17.04.2006, 14:43
    #33671205
S866
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять Select неполучается - помогите
Спасибо понял!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Опять Select неполучается - помогите / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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