【发布时间】:2018-07-19 17:40:44
【问题描述】:
我有这个问题:
SELECT id,
numero_processo,
assunto,
(
SELECT processo_historico.urgencia
FROM processo_historico
WHERE processo_historico.id_processo = processo.id
ORDER BY processo_historico.id DESC LIMIT 1
) as urgencia,
(
SELECT processo_historico.nome_resp
FROM processo_historico
WHERE processo_historico.id_processo = processo.id
ORDER BY processo_historico.id DESC LIMIT 1
) as nome_resp,
(
SELECT processo_historico.user_responsavel
FROM processo_historico
WHERE processo_historico.id_processo = processo.id
ORDER BY processo_historico.id DESC LIMIT 1
) as user_responsavel,
(
SELECT processo_historico.data_chegada
FROM processo_historico
WHERE processo_historico.id_processo = processo.id
ORDER BY processo_historico.id DESC LIMIT 1
) as data_chegada,
(
SELECT processo_historico.distribuicao
FROM processo_historico
WHERE processo_historico.id_processo = processo.id
ORDER BY processo_historico.id DESC LIMIT 1
) as distribuicao,
(
SELECT processo_historico.despacho
FROM processo_historico
WHERE processo_historico.id_processo = processo.id
ORDER BY processo_historico.id DESC LIMIT 1
) as despacho,
(
SELECT processo_historico.parecer
FROM processo_historico
WHERE processo_historico.id_processo = processo.id
ORDER BY processo_historico.id DESC LIMIT 1
) as parecer
FROM processo
正如你们所看到的,子查询太多,无法为每个具有最后插入的“processo_historico”的“进程”创建 1 行。
我该如何改进呢?还有一个问题,我怎样才能把 WHERE 放在这样的地方:
WHERE processo_historico.user_responsavel = *userinput*
这需要给我最后一个“processo_historico”,其中“user_responsavel”是一些数字。
表之间的关系是:"processo" 1 x N "processo_historico"
【问题讨论】:
-
你能用示例数据解释一下你想完成什么吗?
-
@Sjoerd 所以,表之间的关系是:table "processo" 1 x N table "processo_historico"。我想知道在哪里放置“WHERE”以获取在“processo_historico”上插入的最后一行,其中“processo_historico.user_responsavel”等于某个 int 值