powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вложенный запрос вернул больше одного значения
26 сообщений из 26, показаны все 2 страниц
Вложенный запрос вернул больше одного значения
    #39843896
Здравствуйте, подскажите, пожалуйста, в чём может быть ошибка? Уже несколько раз перепроверил код, менял, всё что было было возможным, но ничего не получилось .
Выдаёт ошибку: "Сообщение 512, уровень 16, состояние 1, строка 1
Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =, !=, <, <=, >, >= или используется в качестве выражения.
Выполнение данной инструкции было прервано."

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
INSERT INTO [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB]
           (
            [ACC_MAT_CODE]
           ,[ACC_MAT_NAME]
           ,[ACC_MAT_MARK_NAME]
           ,[ACC_MAT_MARK_NTD]
           ,[ACC_MAT_SORT_NAME]
           ,[ACC_MAT_SORT_NTD]
           ,[DSN_MAT_CODE]
           ,[ACC_MAT_GROUP_NAME]
           ,[ACC_MAT_SUBGROUP_NAME]
)
SELECT
Код 
,Наименование
,Марка 
,(SELECT [Код] 
        FROM [Производство].[dbo].[НТД] 
            WHERE [Ключ] IN
             (SELECT [НТДМарки] FROM [Производство].[dbo].[Материал]
             WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])))
 
,Сортамент
,(SELECT [Код] 
        FROM [Производство].[dbo].[НТД] 
            WHERE [Ключ] IN
             (SELECT [НТДСортамента]FROM [Производство].[dbo].[Материал]
             WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])))
,Код
,(SELECT [Наименование]
    FROM [Производство].[dbo].[ГруппаМатериала]
  WHERE Ключ IN (SELECT Группа FROM [Производство].[dbo].[ГруппаМатериала] 
    WHERE [Ключ] IN (SELECT Группа FROM [Производство].[dbo].[Материал]
         WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB]))))
,(SELECT [Наименование]
    FROM [Производство].[dbo].[ГруппаМатериала]
  WHERE Ключ IN (SELECT Группа FROM [Производство].[dbo].[Материал]
         WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])))
  
  
FROM [Производство].[dbo].[Материал]
  WHERE  
                [Производство].[dbo].[Материал].[Код] NOT IN 
        (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843908
Пупырышки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вестник_проЗдравствуйте, подскажите, пожалуйста, в чём может быть ошибка? Уже несколько раз перепроверил код, менял, всё что было было возможным, но ничего не получилось .
Выдаёт ошибку: "Сообщение 512, уровень 16, состояние 1, строка 1
Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =, !=, <, <=, >, >= или используется в качестве выражения.
Выполнение данной инструкции было прервано."

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
INSERT INTO [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB]
           (
            [ACC_MAT_CODE]
           ,[ACC_MAT_NAME]
           ,[ACC_MAT_MARK_NAME]
           ,[ACC_MAT_MARK_NTD]
           ,[ACC_MAT_SORT_NAME]
           ,[ACC_MAT_SORT_NTD]
           ,[DSN_MAT_CODE]
           ,[ACC_MAT_GROUP_NAME]
           ,[ACC_MAT_SUBGROUP_NAME]
)
SELECT
Код 
,Наименование
,Марка 
,(SELECT [Код] 
        FROM [Производство].[dbo].[НТД] 
            WHERE [Ключ] IN
             (SELECT [НТДМарки] FROM [Производство].[dbo].[Материал]
             WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])))
 
,Сортамент
,(SELECT [Код] 
        FROM [Производство].[dbo].[НТД] 
            WHERE [Ключ] IN
             (SELECT [НТДСортамента]FROM [Производство].[dbo].[Материал]
             WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])))
,Код
,(SELECT [Наименование]
    FROM [Производство].[dbo].[ГруппаМатериала]
  WHERE Ключ IN (SELECT Группа FROM [Производство].[dbo].[ГруппаМатериала] 
    WHERE [Ключ] IN (SELECT Группа FROM [Производство].[dbo].[Материал]
         WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB]))))
,(SELECT [Наименование]
    FROM [Производство].[dbo].[ГруппаМатериала]
  WHERE Ключ IN (SELECT Группа FROM [Производство].[dbo].[Материал]
         WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])))
  
  
FROM [Производство].[dbo].[Материал]
  WHERE  
                [Производство].[dbo].[Материал].[Код] NOT IN 
        (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])



А нахера так писать? Все через Джонни и тогда увидите, где дубль образуется.
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843910
letefon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подзапросы возвращают более одной записи
нужно переписать весь запрос, могу только догадываться как
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843911
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз топик в вакансиях, то я "догадаюсь как" за 100 евро.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843915
letefon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
везде в подзапросах есть код
Код: sql
1.
2.
3.
SELECT Группа FROM [Производство].[dbo].[Материал]
         WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])



а внизу в общем условии
Код: sql
1.
2.
3.
4.
[Производство].[dbo].[Материал]
  WHERE  
                [Производство].[dbo].[Материал].[Код] NOT IN 
        (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])



обратить внимание в первом на
[Код] IN
во втором на
[Код] NOT IN
это опечатка?
или задумано? какой смысл?
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843918
Пупырышки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
letefonвезде в подзапросах есть код
Код: sql
1.
2.
3.
SELECT Группа FROM [Производство].[dbo].[Материал]
         WHERE [Код] IN
             (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])



а внизу в общем условии
Код: sql
1.
2.
3.
4.
[Производство].[dbo].[Материал]
  WHERE  
                [Производство].[dbo].[Материал].[Код] NOT IN 
        (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])



обратить внимание в первом на
[Код] IN
во втором на
[Код] NOT IN
это опечатка?
или задумано? какой смысл?

С этим у него все норм. Просто фильтр по материалам. Пипец, ну кто так пишет? Код ужасен.

"А чо там эти селекты писать. Это каждый может" (С) какой-то манагер.
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843921
letefon, второе - это чтобы добавились данные, с тем кодом, которого ещё не было, чтобы в итоге таблица без повторений была
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843922
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вопрос то в чем? написано же in - это подразумевает под собой возможность > 1 строки. может у вас "код" не является PK
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843926
МодальноеОкно, по отдельности куски кода работают, если вместо последней строки написать просто название столбца, без SELECT , но в данном случае так не получилось сделать
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843933
Пупырышки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вестник_про,

это код T-SQL или какой-нить акцесс ?
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843935
letefon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вестник_про,
тогда может быть все таки так ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT
MAT.Код 
,MAT.Наименование
,MAT.Марка 
,NDTMARK.[Код] 
,MAT.Сортамент
,NDTSORT.[Код]
,MAT.Код
,SUBGRMAT.[Наименование],
GRMAT.[Наименование]
FROM [Производство].[dbo].[Материал] as MAT
LEFT JOIN [Производство].[dbo].[ГруппаМатериала] as GRMAT ON GRMAT.[Ключ] = MAT.[Группа]
LEFT JOIN [Производство].[dbo].[ГруппаМатериала] as SUBGRMAT ON SUBGRMAT.[Ключ] = GRMAT.[Группа]
LEFT JOIN [Производство].[dbo].[НТД] as NDTSORT on NDTSORT.[Ключ] = MAT.[НТДСортамента]
LEFT JOIN [Производство].[dbo].[НТД] as NDTMARK on NDTMARK.[Ключ] = MAT.[НТДМарки]
WHERE MAT.[Код] NOT IN (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843939
Пупырышки, Microsoft SQL Server
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843940
Александр Бердышев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что в ячейку пытаются вставить результат выполнения подзапроса. А он может вернуть несколько значений.
Если там сделать "SELECT TOP 1 [Код] FROM [Производство]" везде - то с ошибкой падать не будет, но будет неправильно работать.
Так-то советую посчитать про строковую агрегацию, какие там есть подходы - это именно тот случай.
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843945
suslupar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПупырышкиПипец, ну кто так пишет? Код ужасен.
Это вообще не код.

Похоже, что суть задачи в том, что нужно данные из одной таблички докинуть в другую, попутно дополнив недостающие поля по связанным табличкам. Я только не понял в чем работа, сделать за него или научить пользоваться join и прочим вариантам связки таблиц.
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843946
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пупырышкивестник_про,

это код T-SQL или какой-нить акцесс ?

это вьюхи к базе на mssql с русскими именами. возможно даже исходная база - 1с
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843955
МодальноеОкно, это по летней практике, создал базы и таблицы, имена писал на русском, чтобы не запутаться, насчёт JOIN знаний мало, поэтому решал таким не самым приличным кодом реализовать заполнение таблиц
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843961
suslupar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вестник_про,

Вы как собрались с базами данных работать, не понимая элементарных связок таблиц? Это тема чуть ли не для первых занятий по теории БД.
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843963
letefon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос пробовали выполнить? оно или не оно?

letefonвестник_про,
тогда может быть все таки так ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT
MAT.Код 
,MAT.Наименование
,MAT.Марка 
,NDTMARK.[Код] 
,MAT.Сортамент
,NDTSORT.[Код]
,MAT.Код
,SUBGRMAT.[Наименование],
GRMAT.[Наименование]
FROM [Производство].[dbo].[Материал] as MAT
LEFT JOIN [Производство].[dbo].[ГруппаМатериала] as GRMAT ON GRMAT.[Ключ] = MAT.[Группа]
LEFT JOIN [Производство].[dbo].[ГруппаМатериала] as SUBGRMAT ON SUBGRMAT.[Ключ] = GRMAT.[Группа]
LEFT JOIN [Производство].[dbo].[НТД] as NDTSORT on NDTSORT.[Ключ] = MAT.[НТДСортамента]
LEFT JOIN [Производство].[dbo].[НТД] as NDTMARK on NDTMARK.[Ключ] = MAT.[НТДМарки]
WHERE MAT.[Код] NOT IN (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843967
letefon, спасибо большое, я пока изучаю Ваш код, потому что не особо понимаю
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843984
letefon, Вы гений, код безупречно сработал, а то свой я создавал около часа, ещё 2-3 часа не мог понять, как исправить. Как я могу Вас отблагодарить? У меня есть на вемани накопления, либо на телефон Вам скинуть ?

Модератор: Тема перенесена из форума "Вакансии".
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39843992
letefon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вестник_прокод безупречно сработал
не факт, я не знаю точную логику, пытался максимально приблизить к предполагаемому результату
запросе используется LEFT JOIN, а возможно правильно где-то или везде нужно INNER JOIN
зависит от обязательности заполнения ссылок на ключевые поля
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39844013
Пупырышки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
letefonзапрос пробовали выполнить? оно или не оно?

letefonвестник_про,
тогда может быть все таки так ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT
MAT.Код 
,MAT.Наименование
,MAT.Марка 
,NDTMARK.[Код] 
,MAT.Сортамент
,NDTSORT.[Код]
,MAT.Код
,SUBGRMAT.[Наименование],
GRMAT.[Наименование]
FROM [Производство].[dbo].[Материал] as MAT
LEFT JOIN [Производство].[dbo].[ГруппаМатериала] as GRMAT ON GRMAT.[Ключ] = MAT.[Группа]
LEFT JOIN [Производство].[dbo].[ГруппаМатериала] as SUBGRMAT ON SUBGRMAT.[Ключ] = GRMAT.[Группа]
LEFT JOIN [Производство].[dbo].[НТД] as NDTSORT on NDTSORT.[Ключ] = MAT.[НТДСортамента]
LEFT JOIN [Производство].[dbo].[НТД] as NDTMARK on NDTMARK.[Ключ] = MAT.[НТДМарки]
WHERE MAT.[Код] NOT IN (SELECT [ACC_MAT_CODE] FROM [COMMON_BUFFER].[dbo].[ACC_MATERIALS_RFB])



А почему not in не вынести в джойн и потом сравнивать на IS NULL ?
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39844065
letefon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пупырышкиletefonзапрос пробовали выполнить? оно или не оно?

пропущено...


А почему not in не вынести в джойн и потом сравнивать на IS NULL ?
можно и вынести
это не окончательный вариант, а попытка дать направление
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39844121
Art_Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
letefon, попробуйте решить задачу на "каком-нибудь" Access. Сразу культура создания sql на порядок улучшится. Ну и про теорию не забудьте.
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39844123
Art_Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Art_Serge, это относится к "вестник_про "
...
Рейтинг: 0 / 0
Вложенный запрос вернул больше одного значения
    #39844854
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для изначального запроса добавить всем подзапросам TOP(1) - сразу заработает - а потом по одному убирать и находить тот, который "дурит", потом уже его лечить.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вложенный запрос вернул больше одного значения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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