IF语句

时间:2018-02-09 14:34:15

标签: mysql if-statement

我尝试获得每门课程的空缺,因为每门课程的空缺有限;

所以需要回归:

课程1 - 没有职位空缺
课程2 - 2个职位空缺

SELECT
                        curs.CURSO_ID,
                        curs.CURSO_NOME,
                        curs.CURSO_DATA_INICIO,
                        curs.CURSO_DATA_FIM,
                        curs.CURSO_DESCRICAO,
                        curs.CURSO_LINK,
                        cate.CAT_CUR_ID,
                        cate.CAT_CUR_DESCRICAO,
                        curs.CURSO_VAGAS,

                        (
                            SELECT COUNT(sol.SOLI_ID)
                            FROM 
                            solicitacao AS sol
                            WHERE 
                            sol.SOLI_FK_CURSO_ID = curs.CURSO_ID 
                        ) AS pedido,

                    IF (
                         curs.CURSO_VAGAS > pedido THEN (curs.CURSO_VAGAS - pedido) ELSE 0
                       ) AS totalVagas


                     /** CASE WHEN (curs.CURSO_VAGAS > pedido) THEN (curs.CURSO_VAGAS - pedido) ELSE 0 END AS totalVagas **/

                      FROM 
                        curso AS curs

                      LEFT JOIN curso_categoria AS cate ON cate.CAT_CUR_ID = curs.CURSO_FK_CATEGORIA_ID

                      ORDER BY
                        CURSO_DATA_INICIO ASC

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

试试这个IF语法:

 IF (curs.CURSO_VAGAS > (
    SELECT COUNT(sol.SOLI_ID) 
    FROM solicitacao AS sol
    WHERE 
    sol.SOLI_FK_CURSO_ID = curs.CURSO_ID
 ), (curs.CURSO_VAGAS - (
    SELECT COUNT(sol.SOLI_ID) 
    FROM solicitacao AS sol
    WHERE 
    sol.SOLI_FK_CURSO_ID = curs.CURSO_ID
 )), 0) AS totalVagas

您只能在GROUP BYORDER BYHAVING条款中使用别名

答案 1 :(得分:0)

尝试其他解决方案:

IF (curs.CURSO_VAGAS > (SELECT pedido), (curs.CURSO_VAGAS - (SELECT pedido )), 0) AS totalVagas