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

есть таблица расчётный счетов - 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
Не могу справиться с запросом... SELECT
    #33514093
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос: нужен полный список счетов (с указанием клиента) или
список клиентов (с указанием счетов)?
...
Рейтинг: 0 / 0
Не могу справиться с запросом... SELECT
    #33514208
eadd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужен полный список счетов (с указанием клиента)
...
Рейтинг: 0 / 0
Не могу справиться с запросом... SELECT
    #33514361
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если использовать промежуточные курсоры, то примерно так:
Код: 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
Не могу справиться с запросом... SELECT
    #33514395
eadd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а в один присест можно залабать такой запрос?
(или есть какой тон программирования что необходимо
разбивать эти вещи?)

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

Я просто думал это сделать открывая таблицу City и Strana
два раза под разными алиасами....
А как правильно делать не знаю...
...
Рейтинг: 0 / 0
Не могу справиться с запросом... SELECT
    #33514417
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В SQL-сервере - можно :)
А в Фоксе - вложенные select не поддерживаются после select... и from...
(правда, не знаю, как в 9-ке), а экспериментировать с join'ами - замучаешься.
Тем более, что то, что создается в курсорах - общий запрос все-равно бы
выбирал, а так хоть более-менее понятно, что происходит.
Не забудь курсоры закрыть ;)
...
Рейтинг: 0 / 0
Не могу справиться с запросом... SELECT
    #33514428
eadd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а ненароком не подскажите хороший
SQL-конструктор в котором такие
тяжкие запросы можно делать?
...
Рейтинг: 0 / 0
Не могу справиться с запросом... SELECT
    #33514503
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Не могу справиться с запросом... SELECT
    #33515206
eadd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
последний запрос Вы сделали в конструкторе query vfp 9?
...
Рейтинг: 0 / 0
Не могу справиться с запросом... SELECT
    #33515403
eadd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я отчего то спрашиваю...
я делаю все наброски с запросами в конструкторе vfp 9.0,
а потом модифицирую как мне надо.
а с этим запросом не знал как записать конструкцию
автор AndreTMINNER JOIN city city2 ON klient.id_city = city2.id_rec ;

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

Спасибо!
...
Рейтинг: 0 / 0
Не могу справиться с запросом... SELECT
    #33515423
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не могу справиться с запросом... SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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