2017-02-06 108 views
0

我只看得到最後一次會議召開的每一位工作人員,但沒有得到任何地方快,這裏是我的佈局獲取組MySQL的最新日期

Meetings 
id staff date  notes <br> 
1 46 2016-01-01 Test notes <br> 
2 46 2016-02-28 test note<br> 
3 56 2017-01-05  
4 56 2017-02-15 

staff 
id first_name last_name<br> 
46 test 1  user1 <br> 
56 test 2  user2 

這裏是我的查詢,但它不會給我最後日期,他們開了個會

SELECT 
staff.first_name, 
staff.last_name, 
meetings.`date`, 
meetings.notes, 
meetings.`type`, 
meetings.id 
FROM 
meetings 
Inner Join staff ON meetings.staff = staff.id 
GROUP BY 
meetings.staff 
+2

這類問題非常常見,請按照[tag:greatest-n-per-group]標籤查找許多解決方案。 –

回答

0

您可以使用GROUP BY子句MAX函數來獲得期望的結果,如:

SELECT s.id, s.first_name, s.last_name, MAX(m.date) 
FROM staff s LEFT JOIN meetings m ON s.id = m.staff 
GROUP BY s.id, s.first_name, s.last_name 
ORDER BY s.id; 

更新 如果你不希望包括工作人員誰沒有過任何會議還那麼你可以只用inner join,如:

SELECT s.id, s.first_name, s.last_name, MAX(m.date) 
FROM staff s JOIN meetings m ON s.id = m.staff 
GROUP BY s.id, s.first_name, s.last_name 
ORDER BY s.id; 
+0

完美的感謝,我tweeked它,它現在是Excatley我需要什麼SELECT s.first_name,s.last_name,MAX(m.date) 從員工的左加入會議米ON s.id = m.staff 哪裏 米.'date'!='null' GROUP BY s.first_name,s.last_name –

+0

什麼是調整?我使用「左」加入的原因是包括沒有參加任何會議的工作人員。 –

+0

@PaulSmith我添加了另一個答案。最好使用'inner join'而不是使用'left join'來檢查null。你可以試試嗎? –

0

感謝的Darshan梅塔這樣做的工作

SELECT s.id,s.first_name,s.last_name,MAX(m.date)
FROM人員我們攜手會議M於s.id = m.staff
GROUP BY s.id,s.first_name, s.last_name
ORDER BY s.id;