ошибка: # 1242 - подзапрос возвращает более 1 строки

0

каждый раз, когда я пытался запустить этот запрос, он выдавал эту ошибку 1242 - Subquery возвращает более 1 строки

INSERT INTO 'tender_request' ('Tender_Request_ID', 'Cost', 'Document', 'Status', 'supplierID', 'TenderID') VALUES ('5556', '900', NULL, 'Active', '1', '652')

на самом деле, я не знаю, где проблема. и это мой код в таблице tender_request:

  BEGIN

SET  @Ecost=( SELECT 'estimated_cost' 
  FROM tender
  INNER JOIN tender_request ON 'tender'.'Tender_ID'='tender_request'.'TenderID');

IF(@Ecost>new.Cost) then
  UPDATE 'kpi' INNER JOIN tender_request on tender_request.TenderID=kpi.tenID 
set kpi.Cost=10 where TenderID=new.TenderID limit 1;
 END IF;
END

Моя первая таблица: Tender_request (Tender_Request_ID, Cost, Document, Status, TenderID supplierID, TenderID)

Моя вторая таблица: KPI (KPI_ID, Cost, Delivery, Service, Quality, Experience, supID, tenID)

Третья таблица: Тендер (Tender_ID, Name, Description, Estimated_cost)

  • 0
    какую ошибку вы получаете? Это показывает контрольную линию? Кроме того, вы можете попробовать использовать TOP 1 вместо LIMIT 1 или включить другое ограничение
  • 0
    @KPavezC OP специально помечает MySQL . Почему TOP 1 ???
Показать ещё 3 комментария
Теги:
triggers

2 ответа

0

Попробуйте это вместо этого:

BEGIN

  SET  @Exist=( SELECT 1
  FROM tender
  INNER JOIN tender_request ON 
 'tender'.'Tender_ID'='tender_request'.'TenderID'
  WHERE 'estimated_cost'>new.Cost AND 
 'tender'.'Tender_ID'=new.TenderID Limit 1;

 IF(@Exist=1) then
    UPDATE 'kpi' INNER JOIN tender_request on 
    tender_request.TenderID=kpi.tenID 
    set kpi.Cost=10 where TenderID=new.TenderID;
 END IF;
END
0

Вы проверили, сколько строк возвращает этот запрос? Я уверен, что больше 1.

SET  @Ecost=( SELECT 'estimated_cost' 
  FROM tender
  INNER JOIN tender_request ON 'tender'.'Tender_ID'='tender_request'.'TenderID');

Попытайтесь добавить LIMIT 1 в конце.

  • 1
    Но из всего tender , как вы знаете, какой получить? LIMIT 1 получает только первый. Не уверен, что это то, что вы хотите.
  • 0
    Это работает, когда я добавляю куда на выбор, SET @Ecost=( SELECT estimated_cost FROM tender INNER JOIN tender_request ON tender.Tender_ID=tender_request.TenderID where tender_request.TenderID=new.TenderID);
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню