我有一個表rosters
和一個表members
。他們建立這樣的:組合MySQL查詢幫助 - 2個表
rosters table
id team member
1 1 1
2 1 2
3 1 3
members table
id name last_active
1 Dan 1454815000
2 Ewan 1454817500
3 Cate 1454818369
我需要rosters
,其中團隊= 1來獲取所有行。然後,我需要所有這些返回的結果,並使用member
列從members
獲取最大last_active
值,其中id
是從rosters
返回的結果該名單這是我會怎麼做它在PHP,但我肯定有一種方法可以使用更高效的查詢。
$rosterList = $db->query('SELECT * FROM rosters WHERE team=1');
$lastActive = 0;
foreach($rosterList as $roster) {
$activity = $db->query('SELECT last_active FROM members WHERE id='.$roster['team']);
if ($activity > $lastActive)
$lastActive = $activity;
}
if ($lastActive > time()-60)
echo 'team is currently online';
這將是很好,如果它可能只是一個返回結果和最新的last_active
列,但如果返回的members
表將被罰款過的所有比賽。
我想我可能理解你的要求,但你的樣本'members'表沒有多於一個'last_active'值(或多於一行),因此不清楚爲什麼你需要最大的'last_active'。你能否更新'members'樣本,以便它更具代表性,並且還提供了你期望的輸出結果的表格? –
此外,您是否真的需要使用輸出中'rosters'表中的其他列值?你的示例PHP使用'SELECT *',但如果你實際上不需要這些列,它會簡化查詢。 –
我已更新了不同時間的成員表。不,我不需要輸出任何值,而我用於比較的唯一值是members表中的last_active列。 – SISYN