Reputation: 1
I have 2 tables: people and log
CREATE TABLE people(id int,name varchar(20),surname varchar(20));
CREATE TABLE log(id int,log_date date);
and I need show all users with they last log. Data to test:
INSERT INTO people VALUES (1, 'John', 'Smith'), (2, 'Elisabeth', 'Taylor'), (3, 'Peter', 'Jackson');
INSERT INTO log VALUES (1,'2014-02-20'),(1,'2014-02-22'),(1,'2014-02-25'),(1,'2014-03-12'),(1,'2014-04-03'),(2,'2014-02-20'),(3,'2014-03-23'),(3,'2014-03-27'),(3,'2014-04-01');
I have this code, so far:
SELECT name,surname,log_date
FROM people JOIN log USING(id)
GROUP BY id,log_date DESC;
but I don't know how can I show only one last log for each user.
Upvotes: 0
Views: 58
Reputation: 154
SELECT people.id, name, surname, MAX(log_date) AS log_date FROM people INNER JOIN
log ON people.id = log.id
GROUP BY people.id, name, surname
optionally add:
ORDER BY log_date DESC
if you want to sort by descending log dates in the result set
Upvotes: 1
Reputation: 116
SELECT min(name), min(surname), max(log_date)
FROM people p1 JOIN log l1
ON p1.id=i1.id
GROUP BY id;
Not tested but that should do.
Upvotes: 0