我是MySQL的新手。

我想创建一个触发器,将投标表中的成本与bid_request表进行比较,如果投标表中的成本大于bid_request表中的成本,则会在KPI表中给出静态分数。

招标表(编号,名称,费用)

投标请求表(ID,名称,估计成本,供应商ID,投标ID)

KPI表(ID,成本)

供应商绩效(KPI_ID,投标ID,投标请求ID)

在请求表中插入一行时,出现以下错误:

#1054 - Unknown column 'tender_request.TenderID' in 'where clause'


如何纠正语法错误?

BEGIN
SET  @Ecost=(SELECT `estimated_cost` FROM tender where `tender`.`Tender_ID`=`tender_request`.`TenderID`);

SET  @cost=(SELECT `cost` FROM tender_request where `tender`.`Tender_ID`=`tender_request`.`TenderID`);


IF(@Ecost>@cost)  then
 UPDATE `kpi` set kpi.Cost=10 WHERE `kpi`.KPI_ID=`supplier performance`.KPIID
and `supplier performance`.TenderID=tender.Tender_ID ;
     END IF;
    END

最佳答案

如果您需要基于两个表的查询,则应使用联接,例如:

  SELECT `estimated_cost`
  FROM tender
  INNER JOIN tender_request ON `tender`.`Tender_ID`=`tender_request`.`TenderID`


要么

  SELECT `cost`
  FROM tender_request
  INNER JOIN tender ON  `tender`.`Tender_ID`=`tender_request`.TenderID

09-28 01:22