К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Прямой, но кривой запрос

Гость
0 - 29.05.2016 - 07:35
Что-то сломал голову с весьма простой задачей. Надо исправить кое-какие косяки в регистрах без перепроведения, но вот вышла непонятка с запросом. Несущественные детали опускаю. Есть простой запрос на чтение:
ТекстЗапроса = "
|SELECT
| $Рег.*,
| Наряды.$ОбщийРеквизит.ДокументОснование AS ДокументОснование
|FROM
| $Регистр." + ИмяРегистра + " AS Рег
|INNER JOIN
| $Документ.НарядНаОперацию AS Наряды ON ($Рег.Наряд = Наряды.IdDoc)
|WHERE
| ($Рег.План NOT IN (SELECT
| Jr.IdDoc
| FROM
| 1SJOURN AS Jr))
|";
Вот такой запрос на изменение записей тоже работает:
ТекстЗапроса = "
|UPDATE
| Рег
|SET
| $Рег.План = ""000""
|FROM
| $Регистр." + ИмяРегистра + " AS Рег
// |INNER JOIN
// | $Документ.НарядНаОперацию AS Наряды ON ($Рег.Наряд = Наряды.IdDoc)
|WHERE
| ($Рег.План NOT IN (SELECT
| Jr.IdDoc
| FROM
| 1SJOURN AS Jr))
|";
Пусть "000" не смущают, это просто для отладки, на самом деле замена должна быть реквизитом из "Наряды", для того то с ними и требуется соединение. Итак такой UPDATE (без внутреннего соединения) прекрасно работает. Но как только возвращаю внутреннее соединение, убрав комментарии с INNER JOIN так запрос не работает, думает, думает и выдавая сообщение, что темповый файл слишком большой. Но связь с Наряды один к одному, искомых (кривых) записей регистра тоже всего ничего, около сотни. В чем мой косяк ? База DBF, но это видно и по 1SJOURN



Гость
1 - 29.05.2016 - 07:36
а почему текст выводится неформатированным, как его прилично опубликовать ?)
Гость
2 - 29.05.2016 - 07:53
в запросе только не $Рег.*, а Рег.*, это я для простоты понимания требуемые поля заменил звездочкой, а про $ забыл )
Гость
3 - 29.05.2016 - 08:26
Короче, пока ломать голову не буду. Обернул запрос на чтение SELECT как внутренний, с ним по ключевым полям связал запрос на UPDATE. Так работает.


К списку вопросов






Copyright ©, Все права защищены