Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询合并,请提供PHP帮助_Php_Sql_Mysql - Fatal编程技术网

SQL查询合并,请提供PHP帮助

SQL查询合并,请提供PHP帮助,php,sql,mysql,Php,Sql,Mysql,我想按poster_时间对消息进行排序,而不是通常的id递增,因为我已经用自动递增的id还原了一个数据库,并且非常旧的消息显示在顶部。我希望能够按poster_时间对消息进行排序,以解决该问题 我试图自己修复这个问题,但我不想失去任何功能,这是我的尝试 SELECT t.id_topic FROM {db_prefix}topics AS t' . ($context['sort_by'] === 'last_poster' ? ' INN

我想按poster_时间对消息进行排序,而不是通常的id递增,因为我已经用自动递增的id还原了一个数据库,并且非常旧的消息显示在顶部。我希望能够按poster_时间对消息进行排序,以解决该问题

我试图自己修复这个问题,但我不想失去任何功能,这是我的尝试

SELECT t.id_topic
            FROM {db_prefix}topics AS t' . ($context['sort_by'] === 'last_poster' ? '
                INNER JOIN {db_prefix}messages AS ml ON (ml.id_msg = t.id_last_msg)' : (in_array($context['sort_by'], array('starter', 'subject')) ? '
                INNER JOIN {db_prefix}messages AS mf ON (mf.id_msg = t.id_first_msg)' : '')) . ($context['sort_by'] === 'starter' ? '
                LEFT JOIN {db_prefix}members AS memf ON (memf.id_member = mf.id_member)' : '') . ($context['sort_by'] === 'last_poster' ? '
                LEFT JOIN {db_prefix}members AS meml ON (meml.id_member = ml.id_member)' : '') . '
            WHERE t.id_board = {int:current_board}' . (!$modSettings['postmod_active'] || $context['can_approve_posts'] ? '' : '
                AND (t.approved = {int:is_approved}' . ($user_info['is_guest'] ? '' : ' OR t.id_member_started = {int:current_member}') . ')') . '
            ORDER BY ' . (!empty($modSettings['enableStickyTopics']) ? 'is_sticky' . ($fake_ascending ? '' : ' DESC') . ', ' : '') . $_REQUEST['sort'] . ($ascending ? '' : ' DESC') . '
            LIMIT {int:start}, {int:maxindex}',
为了测试的目的,请将其删除

SELECT t.id_topic
            FROM topics AS t
                INNER JOIN messages AS ml ON (ml.id_msg = t.id_last_msg)
                INNER JOIN messages AS mf ON (mf.id_msg = t.id_first_msg)
                LEFT JOIN members AS memf ON (memf.id_member = mf.id_member)
                LEFT JOIN members AS meml ON (meml.id_member = ml.id_member)
            WHERE t.id_board = 1
      ORDER BY ml.poster_time DESC
            LIMIT 0, 500
使用上面的代码,我发现我需要ml.poster\u time DESC如何将它与最上面的代码捆绑在一起

这里是结构

董事会结构


谢谢-我已经为此痛苦了整整一个星期。

看起来您希望主题按以下顺序排序:1)粘性,2)从查询字符串排序,或者如果为空,3)发布日期

在组装查询变量之前,请添加以下行:

$_REQUEST['sort'] = (empty($_REQUEST['sort'])) ? 'ml.poster_time' : $_REQUEST['sort'];

基本上这是说,如果还没有选择另一种排序方法(即按字母顺序),则默认按发布日期进行排序。

+1要获得漂亮的屏幕截图和轻松的效果,谢谢,哈哈,我很容易混淆
$_REQUEST['sort'] = (empty($_REQUEST['sort'])) ? 'ml.poster_time' : $_REQUEST['sort'];