MySQL触发器来比较来自不同表的2个值

时间:2018-02-26 20:01:56

标签: mysql sql triggers

我是MySQL新手。

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

招标表(身份证,姓名,费用)

tender_request表(ID,Name,Estimated_cost,supplier_ID,tenderID)

KPI表(ID,费用)

supplier_performance(KPI_ID,tender_ID,tender_request_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

1 个答案:

答案 0 :(得分:0)

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

  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