У меня есть две таблицы, CHEF и MEAL. То, что я пытаюсь сделать, - снизить зарплату каждого шеф-повара, который еще не сделал ни одной еды. Это мой запросSQL two table Однострочный подзапрос возвращает более одной строки
UPDATE CHEF
SET Chef_salary = Chef_salary-(Chef_salary/100 * 5)
WHERE Chef_ID=(SELECT c.Chef_ID
FROM CHEF c LEFT JOIN MEAL m ON (c.Chef_ID=m.Chef_ID)
HAVING count(m.Chef_ID)='0'
GROUP BY c.Chef_ID);;
возвращает ошибку, когда он говорит, что «однорядные подзапрос возвращает более одной строки» Что я делаю неправильно?
Внутренний подзапрос 'ВЫБРАТЬ c.Chef_ID ОТ ШЕФ гр LEFT JOIN блюду м ON (с .Chef_ID = m.Chef_ID) HAVING count (m.Chef_ID) = '0' GROUP BY c.Chef_ID' возвращает более одной строки. Он должен возвращать только одну строку, если вы хотите запустить весь запрос на обновление. Так запустите автономный подзапрос, вы обнаружите, что более одного результата возвращаются. – user1
SET Chef_salary = Chef_salary * 0.95 может дать вам тот же результат, меньше вычислений, предполагая, что сокращение на 5% - это то, что вы ищете – JamieD77
Не нужно объединяться в две таблицы. Обновить CHEF c Set Chef_salary = Chef_salary- (Chef_salary/100 * 5) Где c.Chef_ID не в (выберите Chef_ID из MEAL m) –