Ali Khan Ответов: 2

Подзапрос возвращает более 1 значения это не допускается, если подзапрос следует = , >=, >, & lt;, & lt;=


когда я вставляю данные сотрудника, возникает эта ошибка
подзапрос возвращает более 1 значения это не допускается, если подзапрос следует = , >=,>, & lt;,<=

Что я уже пробовал:

вставить в Transaction_Employee(Memployee_id,Emp_bio_id,des_id,Department_id,Unit_id,etype_id,payment_id,Leave_id,joining_date,resign_date,leave_start_date,Bank_id)
Ценности
(
@memployee,@emp_bio_id,(выбрать различные des_id от Setup_designation где des_name=@назн),(выбрать различные Department_id от Setup_Department где Depart_name=@deprt),
(выбрать различные Unit_id от Setup_Unit где unit_name=@блок),(выбрать различные etype_id от Setup_Enployeetype где эмаль кулон=@emp_type),
(выбрать различные payment_id от Setup_Payment_Type где payment_name=@платежа),(выбрать различные Leave_id от Setup_Leave где leave_name=@leavename),
@joining_date,@resign_date,@leave_startdate, (выберите отдельный Bank_id из Setup_Bank, где bank_name=@bank_name)
)

FranzBe

вам нужно проверить все ваши подзапросы и убедиться, что они имеют результат по 1 значению каждый. вы вставляете одну запись в таблицу transaction_employee. эта запись содержит один 'des_id', поэтому подзапрос '(select distinct des_id From Setup_designation where des_name=@desig) ' не должен приводить к более чем 1 значению (и другие подзапросы тоже не должны)

Ali Khan

так каков же правильный ответ?

FranzBe

Я не могу заглянуть в вашу базу данных, поэтому не могу вам сказать. Проверяйте свои подзапросы один за другим, пока не найдете тот, который приводит к более чем одному значению. Если вы его найдете, вам нужно что-то изменить.

Ali Khan

Итак, если я правильно выберу TOP1 ?

FranzBe

Я не могу сказать вам об этом из того небольшого контекста, который вы показали. Я не хочу вкладывать в ответ больше усилий, чем вы вкладываете в вопрос. С моей точки зрения(что может быть неверно) у вас есть некоторая ошибка в вашей логике. например, возьмите '(select distinct Bank_id from Setup_Bank where bank_name=@bank_name)' 1) 'distinct' здесь не нужен, вы ищете идентификатор банка с заданным именем. Результат должен быть ровно один. 2) Если этот запрос приводит к более чем одной строке, что-то не так с вашей моделью базы данных, возможно, вам нужно обеспечить уникальность с помощью уникального ограничения.

2 Ответов

Рейтинг:
1

ZurdoDev

Как было предложено в комментариях, вам нужно исправить свой код так, чтобы подзапросы не возвращали более одной записи.

Для ясности и облегчения отладки вы должны сначала объявить переменные и заполнить их поисковыми запросами, а затем использовать переменные в операторе insert. Это сделает все намного проще.


Рейтинг:
0

itsmypassion

Используйте предложение TOP 1 в подзапросах.