Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wellfelix

Registros Duplicados

Recommended Posts

Olá pessoal, estou criando uma query que retorna o tempo que o cliente fica aguardando atendimento depois que ele é transferido para outro atendente, na minha query mais interna, eu busco algumas informações sobre os atendentes que aceitaram a transferência de atendimento, só que, o retorno do select vem com registros duplicados, vou colocar abaixo a query mais interna que criei.

SELECT DISTINCT lh_msg.chat_id, lh_msg.id, FROM_UNIXTIME(lh_msg.time, '%H:%i:%s') AS time, lh_msg.user_id FROM lh_msg
WHERE lh_msg.msg LIKE '%aceitou um chat%'
ORDER BY lh_msg.chat_id DESC, lh_msg.id
Mesmo utilizando o distinct, a query me retorna chat_id duplicados, preciso que retorne apenas 1 chat_id de cada atendimento, sem duplicações de chat_id.
Abaixo, coloquei o retorno das colunas, chat_id e id
chat_id id
31013 1146685
31011 1146625
31010 1146672
31008 1146620
31005 1146674
31004 1146589
31003 1146548
31002 1146471
31000 1146402
30999 1146334
30998 1146377
30995 1146309
30993 1145932
30993 1145934
30992 1145884
30992 1145988
30992 1146033
30991 1145962
No exemplo acima, preciso que retorne apenas o primeiro registro de cada chat_id, sem duplicações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Motta, mas consegui descobrir, retirei o distinct e dei um group by no campo chat_id e user_id, agora ele traz somente o primeiro registro sem duplicações :D. Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha como ficou linda a query:

SELECT FROM_UNIXTIME(lh_chat.time, '%d-%m-%Y') AS "Data do Atendimento", TIMEDIFF(lh_wait_time.time_accept, lh_wait_time.time_transf) AS "Tempo de Pos Triagem", lh_wait_time.chat_id AS "ID do Chat do ATD que Transferiu", lh_wait_time.id AS "ID da Mensagem do ATD que Transferiu", lh_wait_time.time_transf AS "Horario da Transferencia", lh_wait_time.chat_id_accept AS "ID do Chat do ATD que Aceitou", lh_wait_time.id_accept AS "ID da Mensagem do ATD que Aceitou", lh_wait_time.time_accept AS "Horario do Atendimento", lh_wait_time.name_support AS "Nome do ATD que Transferiu", lh_wait_time.msg_accept AS "Nome do ATD que Aceitou" FROM lh_chat
INNER JOIN (SELECT lh_transf.id, lh_transf.msg, FROM_UNIXTIME(lh_transf.time, '%H:%i:%s') AS time_transf, lh_transf.chat_id, lh_transf.user_id, lh_transf.name_support, lh_accept.id AS id_accept, lh_accept.msg AS msg_accept, FROM_UNIXTIME(lh_accept.time, '%H:%i:%s') AS time_accept, lh_accept.chat_id AS chat_id_accept, lh_accept.user_id AS user_id_accept FROM lh_msg AS lh_transf
INNER JOIN (SELECT lh_msg.id, lh_msg.msg, lh_msg.time, lh_msg.chat_id, lh_msg.user_id, lh_msg.name_support FROM lh_msg
WHERE lh_msg.msg LIKE '%aceitou um chat%'
GROUP BY lh_msg.chat_id, lh_msg.user_id
ORDER BY lh_msg.chat_id DESC, lh_msg.id) AS lh_accept
ON lh_accept.chat_id = lh_transf.chat_id
WHERE lh_transf.msg LIKE '%direcionado (a)%'
GROUP BY lh_transf.chat_id, lh_transf.user_id
ORDER BY lh_transf.chat_id DESC, lh_transf.id) AS lh_wait_time
ON lh_wait_time.chat_id = lh_chat.id
WHERE FROM_UNIXTIME(lh_chat.time, '%Y-%m-%d') BETWEEN '2016-08-01' AND '2016-08-22'
ORDER BY lh_wait_time.chat_id DESC
Não sei se poderia melhorar ela, tem apenas uns 4 meses que estou trabalhando na área de desenvolvimento e não possuo muito conhecimento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.