|
|
|
Подзапрос!!! Очень надо!!!!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте!!! Очень нужна помощь!!! Имеется БД FoxPro: версия dos-2.6, понятие первичного ключа отсутствует, мне необходимо импортировать из нее данные. Структура той части БД, которая меня интересует представляет собой звезду: есть пять справочников и в шестой таблице (пусть будет "адрес") собраны коды из справочников. Бывают случаи, что в таблице "адрес" встречаются коды, которых нет в справочнике. Соединяюсь с FoxPro через odbc-драйвер из Delphi. Пишу запрос "select r. name, t2. region, t2.subject from "D:\SPR\streets.dbf" as r RIGHT JOIN(select reg.name as region,sub.name as subject, b_d.street_id from "D:\SPR\region.dbf" as reg RIGHT JOIN ("D:\DBF\bas_dat.dbf" as b_d LEFT JOIN "D:\SPR\subject.dbf" as sub ON b_d.subject=sub.kod) ON reg.kod=b_d.region) t2 ON r.kod=t2.street_id; Выдает ошибку: "[ODBC Visual FoxPro Driver] Syntax error" Подскажите как быть!!!! Очень срочно надо!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 19:18 |
|
||
|
Подзапрос!!! Очень надо!!!!
|
|||
|---|---|---|---|
|
#18+
FoxPro вплоть до VFP8 включительно поддерживал подзапросы только и исключительно в директиве WHERE. Подзапросы в директиве FROM или JOIN стали возможны только в VFP9. А драйвер ODBC был написан только для 6 версии. Для VFP9 написан только драйвер OLE DB (ADO). Соответственно, у Вас два варианта решения: 1) скачать драйвер ADO для 9 версии (можно бесплатно скачать с сайта Microsoft) и использовать его для Ваших запросов 2) изменить сам запрос, чтобы подзапросы были только в директиве WHERE Собственно, объединение по LEFT/RIGHT JOIN можно симулировать примерно таким запросом Код: plaintext 1. 2. 3. Ну, или вместо NOT IN использовать NOT EXISTS(). Без разницы. Хотя, я не вижу особого смысла вообще во вложенных запросах. Надо меньше пользоваться построителем запросов и больше думать, а что же этот запрос собственно делает. Если перевести это на "человеческий" язык, просто раскрыв все скобки, то получается довольно простая конструкция Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Драйвер ODBC от 6 версии должен "проглотить" такой запрос без проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 01:04 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1587801]: |
0ms |
get settings: |
12ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 281ms |
| total: | 442ms |

| 0 / 0 |
