MYSQL-由于子查询,结果得到确定吗?

时间:2019-01-25 14:42:39

标签: mysql sql database

我的工作台给我一个“确定”作为输出,没有任何更多信息。 由于先前的问题,我发现问题出在子查询上。但是我不知道问题出在哪里。

这是我的代码:

**CREATE FUNCTION crew_headcount(FlightNo varchar(7), DepartureDateAndTimeUTC timestamp)
RETURNS INT 
DETERMINISTIC
RETURN CASE
    WHEN  
        FlightNo IN(flightexecution.FlightNo) 
        AND DepartureDateAndTimeUTC IN(flightexecution.DepartureDateAndTimeUTC)
    THEN 
         (SELECT COUNT(crew.EmployeeID) 
         FROM crew, flightexecution 
         WHERE crew.FlightNo = flightexecution.FlightNo 
             AND FlightNo = flightexecution.FlightNo 
             AND DepartureDateAndTimeUTC = flightexecution.DepartureDateAndTimeUTC)
    ELSE -1 
    END;**

我的目标是用函数FlightNO和DepatureTime填充函数,如果可以在可用表中找到这两个值,则应得出机组人数,否则为“ -1”。

希望有人可以帮助我。 谢谢

1 个答案:

答案 0 :(得分:1)

除了函数执行没有问题外,我不明白为什么它会返回“ OK”。您如何在MySQL Workbench中运行该功能?什么版本的工作台?

您可以尝试重构CASE语句的WHEN部分:

new ScpColumn(name, field, undefined, type);

最终,可以将其完全重构为单个SELECT语句:

CASE
    WHEN  
        (SELECT COUNT(*) 
         FROM flightexecution 
         WHERE flightexecution.FlightNo = FlightNo AND
               flightexecution.DepartureDateAndTimeUTC = DepartureDateAndTimeUTC) > 0
    THEN 
         (SELECT COUNT(crew.EmployeeID) 
         FROM crew, flightexecution 
         WHERE crew.FlightNo = flightexecution.FlightNo 
             AND FlightNo = flightexecution.FlightNo 
             AND DepartureDateAndTimeUTC = flightexecution.DepartureDateAndTimeUTC)
    ELSE -1 
END