Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка: Subquery returned more than 1 value.  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Добрый вечер!

Собственно у меня вот такая ошибка: "Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated."

ALTER procedure [UI]
  @Item     int,
  @Status   INT,
  @Id INT
as
begin
  set nocount on
  --SET ARITHABORT ON
 
  SELECT distinct /* Actor as [ID] */C2.ID, C2.Firm AS NAME,/* C1.Name, */ C3.Name AS VidID, C4.Name AS SubVid, City AS Region, Approval = CASE C2.Approval WHEN 4 THEN 'Аккредитован' WHEN 5 THEN 'Отклонен' WHEN 6 THEN 'В черном списке' end, C1.Status,  /* C2.Approval, */ C2.DateRegLegal,
  C3.Name AS ActivityName, C4.Name AS SubActivityName
  into #Temp
  from dbo.Actors C1, ContractFull C2, DictContractActivity C3, DictContractSubsActivity C4
  where ItemID = @Item AND  C2.VidID = C3.VidID and C3.VidID = C4.PodVid AND C2.SubVid = C4.ID AND C1.Status > @Status --AND C2.ID = 11355000 --AND Approval IN (4,5,6) 
  --SELECT * FROM #Temp 
                                                                                             
  SELECT SubActivity 
	into #SubActivityID
	from ContractFullSubActivity 
	where ContractID = @id
	
	
	SELECT  Name
	into #subTemp
	from DictContractSubsActivity d
		inner join #SubActivityID d1 on d.ID = d1.SubActivity
	where podvid = (select VidID from #temp)
	
	
	SELECT
	 stuff
	 (
	  (
	   SELECT TOP 1 t2.Name+','
	   from #subTemp t2
	   
	   for xml path('')
	  ,type
	  ).value('.','varchar(max)'),
	  1,0,''
	 ) as Name1
	into #sub
	from #subTemp t1
	
	
	update #temp
	set SubVid = name1
	
	SELECT * from #temp
	                                                                                          
END


Я знаю что можно сделать TOP 1 но с точки зрения это не правильно будет. Можете подсказать как решить проблему с ошибкой?
3 янв 16, 20:28    [18639061]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: Subquery returned more than 1 value.  [new]
3unknown
Member

Откуда: New York
Сообщений: 140
Избавиться от подзапроса where podvid = (select VidID from #temp). Вместо него where podvid in (select VidID from #temp)
3 янв 16, 20:47    [18639148]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: Subquery returned more than 1 value.  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Спасибо, помогло.
3 янв 16, 20:57    [18639185]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: Subquery returned more than 1 value.  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Conversion failed when converting the varchar value 'Видео- и аудиопродакшн' to data type int. А можите еще подсказать?
3 янв 16, 21:10    [18639262]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: Subquery returned more than 1 value.  [new]
3unknown
Member

Откуда: New York
Сообщений: 140
Это Вы где-то стринг сравниваете с интеджер, слово с цифрой. Что-то в логике процедуры не так у Вас.
3 янв 16, 21:17    [18639300]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: Subquery returned more than 1 value.  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Самое интересное что если вот так то это ошибке нет и я везде натыкал SELECT - ов и проходит код.

А если вот так:

--where podvid = (select VidID from #temp)
	where podvid in (select VidID from #temp)


То как будто бы он дальше не проходит и ругается.

Конечно может быть ошибка с которой я сюда написал более серьезная и закрывала эту ошибку.
3 янв 16, 21:46    [18639428]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: Subquery returned more than 1 value.  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Разобрался, спасибо :)
3 янв 16, 23:32    [18639900]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить