Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не могу справиться с запросом... SELECT / 11 сообщений из 11, страница 1 из 1
31.01.2006, 17:33
    #33514068
eadd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
Предчувствую детский вопрос, но всё же я не знаю, как с ним справиться
от-того и прошу помощи... В общем:

есть таблица расчётный счетов - rschet
id_rec - идентификатор расчётного счёта
r_schet - сам расчётный счёт
id_klient - идентификатор клиента (из таблицы klient)
id_bank - идентификатор банка (из таблицы bank)

есть таблица банков - bank
id_rec - идентификатор банка
id_city - идентификатор города (из таблицы city)
naim_bank - наименование банка

есть таблица клиентов - klient
id_rec - идентификатор клиента
id_city - идентификатор города (из таблицы city)
naim_kli - наименование клиента

есть таблица стран - strana
id_rec - идентификатор страны
strana - наименование страны

есть таблица городов - city
id_rec - идентификатор города
id_str - идентификатор страны (из таблицы strana)
city - наименование города

Необходимо создать запрос в котором будут содержаться поля:
r_schet,
naim_bank,
city_bank (город банка),
strana_bank (страна банка),
naim_kli,
city_kli (город клиента),
strana_kli (страна клиента)

Т.е. меня интересует как создать связи и отобразить поля....
(клиент может быть из одной страны, а соответствующий ему
банк из другой, также и с городами они могут быть разными)

Заранее спасибо!
...
Рейтинг: 0 / 0
31.01.2006, 17:38
    #33514093
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
Вопрос: нужен полный список счетов (с указанием клиента) или
список клиентов (с указанием счетов)?
...
Рейтинг: 0 / 0
31.01.2006, 18:06
    #33514208
eadd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
нужен полный список счетов (с указанием клиента)
...
Рейтинг: 0 / 0
31.01.2006, 18:49
    #33514361
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
Если использовать промежуточные курсоры, то примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select a.id_rec,a.naim_bank,b.city as city_bank,c.strana as strana_bank;
 from bank a,city b,strana c;
 where b.id_rec=a.id_city and c.id_rec=b.id_str;
 into cursor tempb
 
select a.id_rec,a.naim_kli,b.city as city_kli,c.strana as strana_kli;
 from klient a,city b,strana c;
 where b.id_rec=a.id_city and c.id_rec=b.id_str;
 into cursor tempc
 
select a.r_schet,;
 b.naim_bank,b.city_bank,b.strana_bank,;
 c.naim_kli,c.city_kli,c.strana_kli;
 from rschet a,tempb b,tempc c;
 where b.id_rec=a.id_bank and c.id_rec=a.id_klient
...
Рейтинг: 0 / 0
31.01.2006, 18:56
    #33514395
eadd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
а в один присест можно залабать такой запрос?
(или есть какой тон программирования что необходимо
разбивать эти вещи?)

Вообще Спасибо!

Я просто думал это сделать открывая таблицу City и Strana
два раза под разными алиасами....
А как правильно делать не знаю...
...
Рейтинг: 0 / 0
31.01.2006, 19:02
    #33514417
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
В SQL-сервере - можно :)
А в Фоксе - вложенные select не поддерживаются после select... и from...
(правда, не знаю, как в 9-ке), а экспериментировать с join'ами - замучаешься.
Тем более, что то, что создается в курсорах - общий запрос все-равно бы
выбирал, а так хоть более-менее понятно, что происходит.
Не забудь курсоры закрыть ;)
...
Рейтинг: 0 / 0
31.01.2006, 19:06
    #33514428
eadd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
а ненароком не подскажите хороший
SQL-конструктор в котором такие
тяжкие запросы можно делать?
...
Рейтинг: 0 / 0
31.01.2006, 19:37
    #33514503
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT ;
	rschet.r_schet, ;
	bank.naim_bank, ;
	city.city as city_bank, ;
	strana.strana as strana_bank, ;
	klient.naim_kli, ;
	city2.city as city_kli, ;
	strana2.strana as strana_kli ;
FROM rschet ;
INNER JOIN bank ON rschet.id_bank = bank.id_rec ;
INNER JOIN city ON bank.id_city = city.id_rec ;
INNER JOIN strana ON city.id_str = strana.id_rec ;
INNER JOIN klient ON rschet.id_klient = klient.id_rec ;
INNER JOIN city city2 ON klient.id_city = city2.id_rec ;
INNER JOIN strana strana2 ON city2.id_str = strana2.id_rec

До версии VFP9 в одном запросе можно указывать не более 10 таблиц-источников. В данном случае их 7, так что должно пройти...
...
Рейтинг: 0 / 0
01.02.2006, 10:44
    #33515206
eadd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
последний запрос Вы сделали в конструкторе query vfp 9?
...
Рейтинг: 0 / 0
01.02.2006, 11:30
    #33515403
eadd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
я отчего то спрашиваю...
я делаю все наброски с запросами в конструкторе vfp 9.0,
а потом модифицирую как мне надо.
а с этим запросом не знал как записать конструкцию
автор AndreTMINNER JOIN city city2 ON klient.id_city = city2.id_rec ;

но предыдущий вариант ч/з три запроса мне тоже очень нравиться!
там всё понятно!

Спасибо!
...
Рейтинг: 0 / 0
01.02.2006, 11:37
    #33515423
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу справиться с запросом... SELECT
eaddпоследний запрос Вы сделали в конструкторе query vfp 9?
Если это вопрос мне, то я его написал вручную прямо в конференции.

Синтаксис корректен для FoxPro начиная с VFP3.

Для младших версий FoxPro, а также, если запрос формируется в дизайнере запросов или View можно написать то же самое через WHERE.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT ;
	rschet.r_schet, ;
	bank.naim_bank, ;
	city.city as city_bank, ;
	strana.strana as strana_bank, ;
	klient.naim_kli, ;
	city2.city as city_kli, ;
	strana2.strana as strana_kli ;
FROM ;
	rschet, ;
	bank, ;
	city, ;
	strana, ;
	klient, ;
	city as city2, ;
	strana as strana2 ;
WHERE ;
	rschet.id_bank = bank.id_rec ;
	AND bank.id_city = city.id_rec ;
	AND city.id_str = strana.id_rec ;
	AND rschet.id_klient = klient.id_rec ;
	AND klient.id_city = city2.id_rec ;
	AND city2.id_str = strana2.id_rec

До версии VFP9 дизайнер запросов некорректно формирует конструкцию запроса в части объединения таблиц. Он пишет

JOIN ... JOIN ... JOIN ... ON ... ON ... ON ...

вместо синтаксически корректного

JOIN ... ON ... JOIN ... ON ... JOIN ... ON

Поскольку объединение INNER JOIN абсолютно эквивалетно равенству в директиве WHERE, то при подобных объединениях можно перенести условие объединения с закладки JOIN на закладку FILTER.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не могу справиться с запросом... SELECT / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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