我有一個聊天系統正常工作的第一場比賽,但我只是意識到郵件列表中翻出每人每封郵件則顯示最後的結果,這顯然是一種資源和壓力的大量浪費在服務器上每個用戶只返回一個結果。MySQL查詢返回的每個結果
這是查詢消息列表,然後有一個while循環清理數組,以顯示每個用戶只有最新的消息,我知道有一個更好的方法來使用JOIN做到這一點,但我可以別把我的頭靠近了。
$result = dbconstruct("SELECT messages.id, messages.msgfrom, messages.msg,
messages.active, messages.replied, users.username, users.online, users.admin,
users.imagename FROM messages, users WHERE msgto='$_SESSION[id]'
AND users.id=msgfrom ORDER by messages.id DESC");
我已經查看了其他答案,但如前所述,發現很難掌握連接技術。
更新
我不認爲我解釋什麼,我需要很好。目前我運行上述查詢,返回大約2000個結果,然後使用它來將每個用戶消息過濾爲單個消息。
$clean = array(); while($result->fetch_assoc()) { if(in_array($result[msgfrom],
$clean)) { }
else { //print message }
$usercheck = array_push($clean, $result[msgfrom]); }
這顯示郵件列表罰款,它只顯示從每個用戶的最後一條消息,但它是一個非常糟糕的方式這樣做。在SQL查詢中必須有一種方法來做到這一點。
php代碼如何清理這個結果? –
你不需要加入,但一個'LIMIT'或'ORDER'條款或雙方 – hjpotter92