I've been trying for two days, without luck.
I have the following simplified tables in my database:
customers:
| id | name     |
| 1  | andrea   |
| 2  | marco    |
| 3  | giovanni |
access:
| id | name_id | date |
| 1  | 1       | 5000 |
| 2  | 1       | 4000 |
| 3  | 2       | 1500 |
| 4  | 2       | 3000 |
| 5  | 2       | 1000 |
| 6  | 3       | 6000 |
| 7  | 3       | 2000 |
I want to return all the names with their last access date.
At first I tried simply with
SELECT * FROM customers LEFT JOIN access ON customers.id = 
access.name_id
But I got 7 rows instead of 3 as expected. So I understood I need to use GROUP BY statemet as the following:
SELECT * FROM customers LEFT JOIN access ON customers.id = 
access.name_id GROUP BY customers.id
As far I know, GROUP BY combines using a random row. In fact I got unordered access dates with several tests.
Instead I need to group every customer id with its corresponding latest access! How this can be done?
 
     
     
    