我尝试获得每门课程的空缺,因为每门课程的空缺有限;
所以需要回归:
课程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
感谢您的帮助
答案 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 BY
,ORDER BY
或HAVING
条款中使用别名
答案 1 :(得分:0)
尝试其他解决方案:
IF (curs.CURSO_VAGAS > (SELECT pedido), (curs.CURSO_VAGAS - (SELECT pedido )), 0) AS totalVagas