Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select и Update / 5 сообщений из 5, страница 1 из 1
30.11.2004, 15:33
    #32806018
StasL1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и Update
Запрос:
Код: plaintext
1.
2.
SELECT c.ID_Cards FROM cards c;
          WHERE c.ID_FactPl IN (SELECT ID_Chto FROM tmpcur)
работает отлично, а то же самое, но с Update
Код: plaintext
1.
2.
3.
    UPDATE cards;
      SET ID_Akt = lnNom_Akt;
      WHERE ID_Cards IN (SELECT c.ID_Cards FROM cards c;
                                WHERE c.ID_FactPl IN (SELECT ID_Chto FROM tmpcur))
выдает ошибку: SQL:Subquery nesting is too deep (Подзапрос вложен слишком глубоко)
Подскажите, пожалуйста, существует ли ограничения на количество подзапросов, либо я не верно написал UPDATE. Как можно это обойти.
Пишу на VFP6.
Зарание благодарю за ответы.
...
Рейтинг: 0 / 0
30.11.2004, 17:00
    #32806249
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и Update
по моему небольшому опыту эта ария из скл_сервера а фокспро по крайней мере 6.0 этого не поймет
...
Рейтинг: 0 / 0
30.11.2004, 17:05
    #32806260
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и Update
StasL1выдает ошибку: SQL:Subquery nesting is too deep (Подзапрос вложен слишком глубоко)
Вот он и говорит, что для VFP 6.0 - это не подходит - перходите, например на 8.0 там кажется вложенность до 8 запросов (в 9.0 - эти ограничения вообще сняты)...

Good luck!
...
Рейтинг: 0 / 0
30.11.2004, 17:29
    #32806345
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и Update
Ну, а обойти это можно стандартным способом. Вложенный запрос оформить как временную таблицу

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT c.ID_Cards FROM cards c ;
INTO CURSOR curTMP NOFILTER ;
WHERE c.ID_FactPl IN (SELECT ID_Chto FROM tmpcur)

UPDATE cards;
      SET ID_Akt = lnNom_Akt;
      WHERE ID_Cards IN (SELECT ID_Cards FROM curTMP)

USE IN curTMP

Как вариант, попробуй заменить IN во вложенном запросе на INNER JOIN. В данном случае на результат это не должно повлиять. Но не уверен, что в 6 это пройдет

Код: plaintext
1.
2.
3.
UPDATE cards;
      SET ID_Akt = lnNom_Akt;
      WHERE ID_Cards IN (SELECT c.ID_Cards FROM cards c, tmpcur ;
                                WHERE c.ID_FactPl = tmpcur.ID_Chto)
...
Рейтинг: 0 / 0
01.12.2004, 09:02
    #32806866
StasL1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select и Update
Вариант с временной таблицей в моем случае подходит больше (попутно решаются и другие проблемы)
Всех благодарю за ответы.
Вопрос закрыт.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select и Update / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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