2014-01-07 21 views
0

我有2個表,chamados(門票)和atividades(活動)的狀態(1 N)每張門票的最後一個活動的選擇狀態和使用中的WHERE

基本上我需要選擇所有「chamados(門票)'最後'atividade(活動)'狀態不是3或5;

我試過在SELECT和LEFT JOIN中,沒有,我還沒有得到它。

我的查詢是:

SELECT * 
FROM (`chamados`) 
ORDER BY `data_criacao_chamado` ASC 
LIMIT 0,20; 

我認爲,查詢應該看起來是這樣的:

SELECT *, 
    (
     SELECT status FROM atividades WHERE atividade.fk_chamado = chamado.id_chamado ORDER BY id_atividade DESC LIMIT 1 
    ) as status_item 
FROM (`chamados`) 
WHERE (status_item != 3 AND status_item != 5) 
ORDER BY `data_criacao_chamado` ASC 
LIMIT 0,20; 

回答

1
SELECT C.data_criacao_chamado FROM atividades A 
JOIN 
    (SELECT fk_chamado, MAX(id_atividade) AS latest_atividade FROM atividades GROUP BY fk_chamado) LATEST_ATIVIDADES  
    ON A.fk_chamado = LATEST_ATIVIDADES.fk_chamado AND A.id_atividade = LATEST_ATIVIDADES.latest_atividade AND A.status_item NOT IN (3,5) 
JOIN 
    chamados C ON C.id_chamado = A.fk_chamado 
+0

完美,對我的偉大工程。 非常感謝。 – Marques

相關問題