Subquery Returned More Than 1 Value

отредактировано 16:20 Раздел: FastReport VCL
Здравствуйте.
Помогите разобраться начинающему.
Вот такой запрос.

isnull((SELECT vg.svalue FROM vg_field_values vg
WHERE vg.ref= o.ID AND vg.fieldid = 128),'') as StatusIP2,

Получаю такую ошибку.
subquery returned more than 1 value. this is not permitted when the subquery follows =, !=, , >= or when the subquery is used as an expression.
В самой программе записывается только такая информация "Подано заявление в ФССП" "13735/16/43045-ИП"


Комментарии

  • gpigpi
    отредактировано 16:20
    Сообщение об ошибке, возвращаемое сервером БД, а не FR, говорит о том, что подзапрос возвращает более, чем 1 значение. Переделайте запрос, чтобы он гарантированно возвращал 1 значение. Например, можно использовать MAX(vg.svalue). Это избавит от сообщения об ошибке, но не факт, что вернёт то, что Вам нужно
  • отредактировано 16:20
    gpi написал: »
    Сообщение об ошибке, возвращаемое сервером БД, а не FR, говорит о том, что подзапрос возвращает более, чем 1 значение. Переделайте запрос, чтобы он гарантированно возвращал 1 значение. Например, можно использовать MAX(vg.svalue). Это избавит от сообщения об ошибке, но не факт, что вернёт то, что Вам нужно

    Сделал так.

    isnull ((select max(cast(vg.svalue as varchar(max))) from vg_field_values vg
    WHERE vg.ref= o.ID AND vg.fieldid = 128),'') as StatusIP2,

    Ошибки больше нет, но так как вы и сказали, что вернет не то, что мне нужно.
    Данные не сопоставляются с нужным клиентом.
    Даже не знаю как переделать, все запросы такого плана и они работают.

    isnull((SELECT vg.svalue FROM vg_field_values vg
    WHERE vg.ref= o.ID AND vg.fieldid = 251),'') as FIOSPI1,
    isnull((SELECT vg.svalue FROM vg_field_values vg
    WHERE vg.ref= o.ID AND vg.fieldid = 248),'') as StatusIP1,
    isnull((SELECT vg.svalue FROM vg_field_values vg
    Там просто обычный произвольный текст, что-то вроде комментария, нет особых правил заполнений.
  • отредактировано 16:20
    Nikulin написал: »
    Сделал так.

    isnull ((select max(cast(vg.svalue as varchar(max))) from vg_field_values vg
    WHERE vg.ref= o.ID AND vg.fieldid = 128),'') as StatusIP2,

    Ошибки больше нет, но так как вы и сказали, что вернет не то, что мне нужно.
    Данные не сопоставляются с нужным клиентом.
    Даже не знаю как переделать, все запросы такого плана и они работают.

    isnull((SELECT vg.svalue FROM vg_field_values vg
    WHERE vg.ref= o.ID AND vg.fieldid = 251),'') as FIOSPI1,
    isnull((SELECT vg.svalue FROM vg_field_values vg
    WHERE vg.ref= o.ID AND vg.fieldid = 248),'') as StatusIP1,
    isnull((SELECT vg.svalue FROM vg_field_values vg
    Там просто обычный произвольный текст, что-то вроде комментария, нет особых правил заполнений.

    Проблема решилась после обновления программы, по непонятной причине, данные дублировались.
    Спасибо большое за помощь.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.