首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对数据库中检索到的信息进行排序

问对数据库中检索到的信息进行排序
EN

Stack Overflow用户
提问于 2011-07-26 02:57:25
回答 2查看 53关注 0票数 0

我通过使用嵌套的while循环从数据库中检索信息来创建提要(有更好的方法吗?)。

我有一个名为users的表,其中包含所有名称和其他内容。另一个表名为messages,它包含消息、发布消息的用户和时间戳。

代码语言:javascript
复制
$userQuery = mysql_query("SELECT name FROM users");
while ($user = mysql_fetch_array($userQuery, MYSQL_NUM)) {
    $messageQuery = mysql_query("SELECT message FROM messages WHERE user = $user ORDER BY timestamp DESC");
    while ($message = mysql_fetch_array($messageQuery, MYSQL_NUM)) {
        echo "$user[0]: $message[0]";
    }
}

问题是它不是按时间戳排序的,我不知道它是如何排序的。我尝试过带UNIX时间戳的timestamp、datetime和int类型。

编辑:我应该补充说,用户和消息匹配得很好,只是顺序不起作用。

EN

回答 2

Stack Overflow用户

发布于 2011-07-26 03:03:30

我猜你是以或多或少的随机顺序得到你的用户,并且“在”一个用户中排序是可以的吗?!

使用:

代码语言:javascript
复制
$result = mysql_query('select users.name,messages.message from messages join users on (users.name=messages.user) order by messages.timestamp');
while($row = mysql_fetch_row($result))
    echo "$row[0]: $row[1]";

这应该会给您一个有序的结果(至少如果您有一个名为messages.timestamp的列。检查名称;-))。所有这些都在一个查询中...

票数 0
EN

Stack Overflow用户

发布于 2011-07-26 03:06:10

对于查询,您可以创建一个连接

代码语言:javascript
复制
SELECT u.name as name, m.message as message
FROM users u inner join messages m
on u.user = m.user
order by 
m.timestamp DESC

至于第二部分,我看不出你的能力有什么问题。也许你可以发布一些你的数据样本,看看这是否有什么不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6820935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档