你好我做了一个查询,其中首先从数据库中获取uid的朋友,并根据从数据库中获取通知。问题是假设用户a的两个朋友是用户b和用户c,那么他们的通知应该在我这样做的查询后出现
用户b更新了个人资料
用户c评论
用户b喜欢
用户c评级
这些是根据时间戳
排列的但它的安排是为每个朋友分开时间戳
像
用户b喜欢
用户b更新了个人资料
用户c评论
用户c评级
我的代码
$frndnoti=mysql_query("select friend_id from friend_list where uid=$id and status='1'");
while($bow=mysql_fetch_array($frndnoti))
{
$frnnid=$bow['friend_id'];
$sql3=mysql_query("select * from notification
where title_text='Global Notification'
and user_id in ($id , $frnnid)
and owner_user_id=$frnnid
and is_seen=0
order by time_stamp DESC");
while($row=mysql_fetch_array($sql3))
{
and so on.....
可以根据时间戳再次安排$ sql3的结果吗?被取出后?或以任何方式改进此查询?
答案 0 :(得分:0)
经过长时间的思考并尝试我找出了它的rite查询,我在这里查询了这个问题,以便它可以帮助一些人后来卡住
$sql3=mysql_query("select n.*,f.friend_id,f.uid,f.status from notification
n,friend_list f where f.uid='$id' and f.status='1' and n.title_text='Global
Notification' and n.user_id in ('$id' , f.friend_id) and n.owner_user_id=f.friend_id
and n.is_seen='0' order by n.time_stamp desc");
while($row=mysql_fetch_array($sql3))
{
and so on.....
答案 1 :(得分:0)
可能是因为您正在嵌套查询并通过friend_id将子查询结果插入到数组中。使用php在时间戳上对返回结构进行排序,或者使用一个查询来获取所有通知:
从通知中选择*
其中title_text ='全球通知'
和user_id = $ id或user_id in
(从friend_list中选择friend_id,其中uid = $ id和status ='1')
和owner_user_id in
(从friend_list中选择friend_id,其中uid = $ id和status ='1')
和is_seen = 0
按时间顺序排序DESC
虽然我不太喜欢那种因为重复的嵌套查询。
其他问题:
答案 2 :(得分:-1)
仔细检查time_stamp
数据类型是时间戳。重命名专栏time_stamp
,然后重试。如果这也行不通,可以选择使用PHP数组排序函数对数组进行排序。