我有4张桌子:
我需要在我的查询中搜索每个'DPT',显示每个'proceso'的'id_entrevista'计数,但是entrevista.resultado = 1并且必须是每个entrevista.candidato的最后一行
但如果我有更多行相同的entrevista.candidato:
只是现在我可以拿到entrevista.id_entrevista的数量(计数):
SELECT p.id_proceso,
(
SELECT count(id_entrevista)
from entrevista
where entrevista.proceso = p.id_proceso
) as total
from proceso p
where dpt = 99 //this is the current dpt
但是我需要子查询:
SELECT p.id_proceso,
(
SELECT count(id_entrevista)
from entrevista
where entrevista.proceso = p.id_proceso
) as total,
(
//here
) as approved
from proceso p
where dpt = 99 //this is the current dpt
我有一个想法,我需要检查entrevista
中每个candidato
的最后proceso
。像这样:
SELECT *
FROM entrevista
WHERE proceso = 120 and candidato = 374
ORDER BY fecha_entrevista DESC LIMIT 1
这将给我resultado
,结果为1或0。我只需要count
从查询中返回1的行
例如:
|entrevista |
-----------
0001 | 0001 | 0001 | 20-12-2017 | 1
0002 | 0001 | 0001 | 21-12-2017 | 0
0003 | 0002 | 0001 | 20-12-2017 | 1
0004 | 0003 | 0001 | 20-12-2017 | 1
| candidato |
----------
0001 | Foo
0002 | Bar
0003 | John Doe
|proceso |
----------
0001 | FooProceso | 0001
| DPT |
----
0001 | FooDPT
预期产出:
Proceso | Amount of interviews | Amount of pass
--------------------------------------------------
FooProceso | 4 | 2
答案 0 :(得分:1)
感谢您的帮助,最后我做到了:
SELECT p.id_proceso, p.proceso,
(
SELECT count(id_entrevista)
from entrevista
where entrevista.proceso = p.id_proceso
) as q_entrevistas,
(
select count(distinct(ee.candidato))
from entrevista ee
where ee.proceso = p.id_proceso
and ee.candidato not in (
select e.candidato
from entrevista e
where e.proceso = p.id_proceso and e.resultado = 0
)
) as aptos
FROM proceso p
WHERE p.dpt = $dpt //in this case i use PHP