Reputation: 159
How can I get last date data from each user_id
:
User
id | name |
1 | name 1 |
2 | name 2 |
3 | name 3 |
Date
id | date | user_id |
1 | 2018-08-13 | 1 |
2 | 2018-08-13 | 2 |
3 | 2018-08-15 | 1 |
4 | 2018-08-14 | 2 |
How can I output like this :
user_id | date | name
1 | 2018-08-15 | name 1
2 | 2018-08-14 | name 2
3 | null | name 3
UPDATE
I want my output to select date table join by user table -> and get the last date from each user_id
If my user_id
doesn't have in date value it will output 0
or null
Upvotes: 2
Views: 81
Reputation: 67505
Since you're tagging Laravel I suggest to you using the Query Builder like :
DB::table('dates')
->join('users', 'dates.user_id', '=', 'users.id')
->select(db::raw('users.name, user_id, max(date)'))
->groupBy('user_id','name')
->get();
OUTPUT:
Illuminate\Support\Collection {#2957
all: [
{#2944
+"name": "name 1",
+"user_id": 1,
+"max": "2018-08-15",
},
{#2941
+"name": "name 2",
+"user_id": 2,
+"max": "2018-08-14",
},
],
}
Upvotes: 2
Reputation: 528
You can use MAX
SELECT u.UserID, MAX(d.date) date, u.name
FROM User u
left join Date d on u.id = d.id
Upvotes: 1
Reputation: 164
SELECT u.id,MAX(d.date),u.name FROM DATE d JOIN user u ON d.user_id = u.id GROUP BY d.user_id
Upvotes: 1
Reputation: 121912
For getting just maximum date for user, you can use this one -
SELECT
u.id,
u.name,
MAX(d.date) date
FROM user u
LEFT JOIN date d
ON u.id = d.user_id
GROUP BY u.id
1 name 1 15-Aug-18
2 name 2 14-Aug-18
3 name 3 (null)
Upvotes: 1