I’m having trouble writing the query that returns the last id by date of a table and fetching the name of that id from another table
x
SELECT l1.*
FROM ficha_eventos l1
INNER JOIN (SELECT l2.`SQ_FICHA`, MAX(l2.`id`) as maxid
FROM ficha_eventos l2
GROUP BY l2.`SQ_FICHA`
) l3 ON l3.maxid = l1.id
Result above
2| 1 |2014-04-04 | ok 6| 2 |2014-04-04 | ok 4| 3 |2014-04-04 | ok
ficha_cadastro SQ_FICHA|NOME| 1|gabriel 2|carlos 3|manuel ficha_evento id|dia_atendimento|ligacao_atendimento|SQ_FICHA 1 | 2011-01-01 | no | 1 2 | 2014-04-04 | ok | 1 3 | 2012-01-01 | no | 2 4 | 2013-03-03 | ok | 3 5 | 2013-01-01 | no | 3 6 | 2014-04-04 | ok | 2
Result I want
2|gabriel|2014-04-04 | ok 6|carlos|2014-04-04 | ok 4|manuel|2014-04-04 | ok
Advertisement
Answer
With mysql 5.x you can use inner joins to acheive what you want.
but manuel has not the result you has shown us, it must be 2013-03-03 instead
the joins can be If you have more elements than events and still want to see them you must use RIGHT JOIN
CREATE TABLE ficha_cadastro (
`SQ_FICHA` INTEGER,
`NOME` VARCHAR(7)
);
INSERT INTO ficha_cadastro
(`SQ_FICHA`, `NOME`)
VALUES
('1', 'gabriel'),
('2', 'carlos'),
('3', 'manuel');
CREATE TABLE ficha_evento (
`id` INTEGER,
`dia_atendimento` Date,
`ligacao_atendimento` VARCHAR(2),
`SQ_FICHA` INTEGER
);
INSERT INTO ficha_evento
(`id`, `dia_atendimento`, `ligacao_atendimento`, `SQ_FICHA`)
VALUES
('1', '2011-01-01', 'no', '1'),
('2', '2014-04-04', 'ok', '1'),
('3', '2012-01-01', 'no', '2'),
('4', '2013-03-03', 'ok', '3'),
('5', '2013-01-01', 'no', '3'),
('6', '2014-04-04', 'ok', '2');
✓ ✓ ✓ ✓
SELECT
f.id, f.dia_atendimento, fa.NOME, f.ligacao_atendimento
FROM
ficha_evento f
INNER JOIN
(SELECT
MAX(dia_atendimento) daxdate, SQ_FICHA
FROM
ficha_evento
GROUP BY SQ_FICHA) f1 ON f1.daxdate = f.`dia_atendimento`
AND f1.SQ_FICHA = f.SQ_FICHA
INNER JOIN
ficha_cadastro fa ON fa.SQ_FICHA = f.SQ_FICHA
ORDER BY f.SQ_FICHA
id | dia_atendimento | NOME | ligacao_atendimento -: | :-------------- | :------ | :------------------ 2 | 2014-04-04 | gabriel | ok 6 | 2014-04-04 | carlos | ok 4 | 2013-03-03 | manuel | ok
db<>fiddle here