$friendship = mysql_query("SELECT * FROM friends WHERE accountid='$row[id]' && status='approved'") or trigger_error(mysql_error());
while($joysong2 = mysql_fetch_array($friendship))
{
$newnot=mysql_query("SELECT * FROM notifyme where userid='$joysong2[friendid]' ORDER BY date DESC, time DESC LIMIT 0,5") or trigger_error(mysql_error());
while($notify = mysql_fetch_array($newnot))
{
}
}
大家好,让我解释一下我在这里要做的事情。
我的$ friendship查询向我们提供了用户已批准与之通信的用户的结果。
因此,结果将以1,3,4,5的形式返回,具体取决于其他用户的用户ID。
第二个查询$ newnot正在使用$ friendship信息并在表notifyme中返回5个条目。
问题是我现在每个用户都得到5个结果。
根据日期/时间顺序通知我,我想要的只有5个结果。
例如
1 posted 1/08/2015
1 posted 2/08/2015
3 posted 1/08/2015
4 posted 2/08/2015
3 posted 3/08/2015
我希望他们回来
3 posted 3/08/2015
4 posted 2/08/2015
1 posted 2/08/2015
3 posted 1/08/2015
1 posted 1/08/2015
现在虽然我的结果会以
的形式回归1 posted 1/08/2015
1 posted 2/08/2015
1 posted 1/07/2015
1 posted 1/06/2015
1 posted 1/05/2015
3 posted 3/08/2015
3 posted 1/08/2015
3 posted 1/07/2015
3 posted 1/06/2015
3 posted 1/05/2015
我想你明白了我的意思。那么我该如何让它发挥作用呢?
答案 0 :(得分:0)
我想这会对你有所帮助,但考虑到一些错误,因为我没有对它进行测试。在我们修复之前,欢迎您显示错误。用你使用的名称替换一些列名:
SELECT accountid, status, cnt_rows, `date` FROM friends f
LEFT JOIN (
SELECT COUNT(*) AS cnt_rows, `date`, f_id FROM notifyme n) AS n_cnt
ON f.id=n_cnt.f_id
)
GROUP BY n_cnt.date
WHERE status='approved'
OREDER BY `date` DESC
LIMIT 5