Query mysql bring last call without duplicate

Asked

Viewed 38 times

1

Well, I have the following table:

CREATE TABLE `chamado` (
  `id` int(11) NOT NULL,
  `nomechamado` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
  `tipochamado` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
  `area` varchar(70) COLLATE utf8_unicode_ci NOT NULL,
  `mesreferencia` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `ramal` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  `obs` varchar(535) COLLATE utf8_unicode_ci NOT NULL,
  `anexo` longtext COLLATE utf8_unicode_ci NOT NULL,
  `datahora` datetime NOT NULL,
  `status` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `fluxo` varchar(50) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `chamado`
  ADD PRIMARY KEY (`id`);

INSERT INTO `chamado` (`id`, `nomechamado`, `tipochamado`, `area`, `mesreferencia`, `ramal`, `obs`, `anexo`, `datahora`, `status`, `fluxo`) VALUES
(8, 'NorJun8', 'Normal', 'PLANEJAMENTO', 'Junho', 'TESET', 'ae', 'Nota de Credito 18.xlsx', '2019-06-28 14:40:47', 'Em andamento', 'Abertura'),
(13, 'NorSet11', 'Normal', 'PLANEJAMENTO', 'Setembro', '1010', '', 'NL 9 - ESTREITO MAIO19.pdf', '2019-07-02 14:42:41', 'Em andamento', 'Abertura'),
(14, 'NorSet11', 'Normal', 'CÉLULA TRANSPORTE', 'Setembro', '6359', 'asda', '13NL 9 - ESTREITO MAIO19.pdf', '2019-07-02 14:47:47', 'Em andamento', 'Aprovado'),
(16, 'NorJun8', 'Normal', 'CÉLULA TRANSPORTE', 'Junho', '6565', 'ok', '14NF 4014_4015.pdf', '2019-07-03 16:36:07', 'Em andamento', 'Aprovado'),
(17, 'NorSet11', 'Normal', 'TRANSPORTE CARREG.', 'Setembro', 'fdsfd', 'aprovado', '16Re_ De acordo FV60.msg', '2019-07-08 15:15:23', 'Em andamento', 'Aprovado'),
(18, 'NorJan18', 'Normal', 'PLANEJAMENTO', 'Janeiro', '4345', 'Aeasf', 'Re_ De acordo FV60.msg', '2019-07-08 15:42:50', 'Em andamento', 'Abertura'),
(22, 'NorJan18', 'Normal', 'CÉLULA TRANSPORTE', 'Janeiro', '123124', 'falta', '18Fechamento Método - Junho 2019.msg', '2019-07-08 15:58:10', 'Em andamento', 'Reprovado'),
(23, 'NorJan18', 'Normal', 'PLANEJAMENTO', 'Janeiro', 'TESET', 'corrigido', '22NF 37052 37043 CONDENSADOR_GRADE.PDF', '2019-07-09 10:57:17', 'Em andamento', 'Aprovado'),
(24, 'NorJan18', 'Normal', 'CÉLULA TRANSPORTE', 'Janeiro', '111', 'Ok', '23NOTA FISCAL 2019 - 513.pdf', '2019-07-09 17:09:43', 'Em andamento', 'Aprovado'),
(25, 'NorJan18', 'Normal', 'TRANSPORTE CARREG.', 'Janeiro', '1010', 'falta coisa', '24NOTA FISCAL 2019 - 513.pdf', '2019-07-09 17:12:08', 'Em andamento', 'Reprovado');

ALTER TABLE `chamado`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;COMMIT;

When executing the following query:

SELECT * 
  FROM `chamado` 
 where chamado.nomechamado = 'NorJan18' 
 order BY chamado.datahora asc

This return comes to me: inserir a descrição da imagem aqui

However I need that instead of bringing twice the "Area" TRANSPORT CELL, bring only 1 time, being of the biggest date (Field date).

Example: inserir a descrição da imagem aqui

2 answers

0


Cannot use a simple group by because you need the other columns, so you can do a subquery that groups by area and brings the id sorted by date:

SELECT * 
  FROM `chamado` 
 where chamado.nomechamado = 'NorJan18' 
 and id in (select max(id) 
              from `chamado` c 
             where c.nomechamado = 'NorJan18' group by c.area
           order BY c.datahora asc)

See working here: sqlfiddle

  • It worked, thank you!

0

The simplest way would be to put the limit 1 right after ordination. Ending in this way:

SELECT * 
  FROM `chamado` 
 where chamado.nomechamado = 'NorJan18' 
 order BY chamado.datahora asc
 LIMIT 1

Browser other questions tagged

You are not signed in. Login or sign up in order to post.